Executable Graphics: page 00



The necessary precondition for executable graphics is an agile graphics editor with certain capabilities. Figure 1. shows a model of the user in such an environment. Objects can be placed in attention and manipulated; one of the manipulations is execution, in which case the result of evaluation is returned at the cursor.

Figure 1. Model of user on handPAM

handPAM: A Graphic Structure Editor

The PAM system as a whole was designed for the agile manipulation of text-graphic patterns      first manually, and then, later, programmatically. PAM stands for visual PAttern Manipulation. handPAM is the aspect of the system which allows the user to get his hands on the images for manual manipulation. The handPAM environment offers a static display (it doesn't scroll) with discretionary execution (objects are first created simply as visual entities, and then later submitted for execution).

Objects on the display follow LISP structure      either atomic or tree structured. This structure for text-graphic images was chosen because it most directly satisfies the needs of manual manipulation. That is, through his initial concern with manual manipulation, the user soon finds that the selective creation, moving and erasing of text-graphic objects necessitates some way of structuring complex objects and their parts. Trees provide a simple and obvious way to structure visual objects, e.g.

Complex objects with such a tree structure are called text-graphic patterns. handPAM is defined by a function called handle, and is actually a generalization of Warren Teitelman's LISP editor to text-graphic patterns on a static display (Teitelman credits Peter Deutsch for the original idea of a structure editor [Teitleman78]). Thanks to the simplicity and power of LISP functions and structures, some of the ambiguities of text-graphic manipulators [Sutherland65, Futrelle78] are clarified, in particular, Sutherland's 'Structure of Drawings Problem'. handPAM is described in more detail in [Lakin80a,80b,81,83]. As mentioned above, among the editor operations available on the 'current form' is execution, thus setting the stage for part II below.