Multi-Garnet: Integrating Multi-Way Constraints with Garnet
Authors: Michael Sannella and Alan Borning
Published as UW Tech Report 92-07-01.
Constraints provide a useful mechanism for maintaining relations in user
interface toolkits. Garnet is a widely-used user interface toolkit with
considerable functionality, based on one-way, required constraints.
Multi-Garnet extends Garnet by adding support for multi-way constraints and
constraint hierarchies with both required and preferential constraints.
This document contains three chapters describing Multi-Garnet:
- Chapter 1 presents a high-level overview of Multi-Garnet. To motivate
the development of Multi-Garnet, we examine the Garnet constraint system,
present some realistic user interface problems that are difficult to handle
in Garnet, and demonstrate how Multi-Garnet addresses these problems. We
provide details on how Multi-Garnet supports some of the features of
Garnet, including constraints with pointer variables, and inheritance of
- Chapter 2 contains a reference manual for the current version of
Multi-Garnet (version 2.1). This includes information on compiling and
loading Multi-Garnet, as well as documentation for the functions and macros
used to create and manipulate Multi-Garnet constraints. This chapter also
contains additional details on the implementation of Multi-Garnet.
- Chapter 3 describes a large Multi-Garnet example: a scatterplot
displaying a set of points. Multi-Garnet constraints are used to maintain
relationships between the data values, the screen positions of the points,
and the positions of the X and Y-axes. Multiple interaction modes allow
manipulating the scatterplot points and axes in different ways.
full paper (compressed postscript)
Constraints home page