FIGUE
*Design *Boxes *Combinator *Formatting *Geometry *Reuse
*Selections *Paths *Concurrency *Exception *Interaction *Utility
*Resource *Drawing *Incremental *Customize *Various

Paths

The API cross references give an immediate access to relevant interfaces and classes.

* Path

A path is a hierarchical data structure used to update box structure and selection path. The rank is the logical order of the node in the target (box structure or selection path). Each node may contain operations. These operations are used via a multiple dispatch scheme during path visiting. Linear path is just a lighter implementation used when we know the path is a simple one (for exemple, when generating pointing events).

PATH

* Path Visiting

Our path visiting scheme is a variation of the standard visitor design pattern. In fact, the multiple dispatch occurs between the operations of the modification path, the visitor and eventually the target (box structure or selection path), not directly between the path and the visitor. According to the context of use, we can update the selection path with a selection path visitor, or update the box structure. A path visitor incremental used in an interactive context compute the damaged area for an optimal refresh.

VISITOR
Here is a simple vision of the multiple dispatch occurring when visiting a modification path. We iterate in parallel through each hierarchical structure (boxes, selection path, modification path). For a given level, we iterate over the path operations and make them accept the current visitor. When the operation accepts, it callbacks the visitor with encoding the type of the operation in the method signature. For example, an InsertGlyph operation will callback the insertGlyph method of the visitor, whereas a shrink operation will callback the shrinkSelection method. A particular visitor may implement various behaviour for a given callback.
MULTIPLE DISPATCH

* API Cross References


*Design *Boxes *Combinator *Formatting *Geometry *Reuse
*Selections *Paths *Concurrency *Exception *Interaction *Utility
*Resource *Drawing *Incremental *Customize *Various

Comments or suggestions?
Need some help?
Copyright ©1998 INRIA
Last updated 5 October 1998 by Bruno Conductier
FIGUE