Page 2 Table of Contents Index Page 4
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30
A, B, C, D, E


by recombining lower level facilities he can build his own programming and user interfaces
according to his specific needs or requirements. For example, CLIM supports the development
of applications independent of look and feel, as well as the portable development of toolkit
libraries that define and implement a particular look and feel.

In addition, CLIM's layered design allows application programs to exclude facilities that they do
not use, or reimplement or extend any part of the substrate. To these ends, CLIM is specified
and implemented in a layered, modular fashion based on protocols. Each facility documented in
this specification has several layers of interface, and each facility is independently specified and
has a documented external interface.

The facilities provided by CLIM include:

Geometry CLIM provides provides geometric objects like point, rectangle, and transformations
and functions for manipulating them.

Graphics CLIM provides a rich set of drawing functions, including ones for drawing complex
geometric shapes, a wide variety of drawing options (such as line thickness), a sophisticated
inking model, and color. CLIM provides full affine transforms, so that a drawing may be
arbitrarily translated, rotated, and scaled (to the extent that the underlying window system
supports the rendering of such objects).

Windowing CLIM provides a portable layer for implementing sheet classes (types of window-
like objects) that are suited to support particular high level facilities or interfaces. The
windowing module of CLIM defines a uniform interface for creating and managing hi-
erarchies of these objects regardless of their sheet class. This layer also provides event

Output Recording CLIM provides a facility for capturing all output done to a window. This
facility provides the support for arbitrarily scrollable windows. In addition, this facility
serves as the root for a variety of interesting high-level tools.

Formatted Output CLIM provides a set of macros and functions that enable programs to
produce neatly formatted tabular and graphical displays with very little effort.

Context Sensitive Input The presentation type facility of CLIM provides the ability to as-
sociate semantics with output, such that objects may be retrieved later by selecting their
displayed representation with the pointer. This sensitivity comes along automatically and
is integrated with the Common Lisp type system. A mechanism for type coercion is also
included, providing the basis for powerful user interfaces.

Application Building CLIM provides a set of tools for organizing an application's top-level
user interface and command processing loops centered on objects called frames. CLIM
provides functionality for laying out frames under arbitrary constraints, managing com-
mand menus and/or menu bars, and associating user interface gestures with application
commands. Using these tools, application writers can easily and quickly construct user
interfaces that can grow flexibly from prototype to delivery.

Adaptive Toolkit CLIM provides a uniform interface to the standard compositional toolkits
available in many environments. CLIM defines abstract panes that are analogous to the
gadgets or widgets of a toolkit like Motif or OpenLook. CLIM fosters look and feel inde-
pendence by specifying the interface of these abstract panes in terms of their function and

Page 2 Table of Contents Index Page 4
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30
A, B, C, D, E