Page 175 Table of Contents Index Page 177
Chapters
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



CHAPTER 19. BORDERED OUTPUT

=> surrounding-output-with-border (&optional stream &key shape (move-cursor t)) &body body
[Macro]
Binds the local environment in such a way the output of body will be surrounded by a border of
the specified shape. Every implementation must support the shapes :rectangle (the default),
:oval, :drop-shadow, and :underline. :rectangle draws a rectangle around the bounding
rectangle of the output. :oval draws an oval around the bounding rectangle of the output.
:drop-shadow draws a "drop shadow" around the lower right edge of the bounding rectangle of
the output. :underline draws a thin line along the baseline of all of the text in the output, but
does not draw anything underneath non-textual output.

If the boolean move-cursor is true (the default), then the text cursor will be moved so that it
immediately follows the lower right corner of the bordered output.

stream is an output recording stream to which output will be done. The stream argument is
not evaluated, and must be a symbol that is bound to a stream. If stream is t (the default),
*standard-output* is used. body may have zero or more declarations as its first forms.

There are several strategies for implementing borders. One strategy is to create a "border
output record" that contains the output records produced by the output of body, plus one or
more output records that represent the border. Another strategy might be to arrange to call the
border drawer at the approriate times without explicitly recording it.

=> define-border-type shape arglist &body body [Macro]
Defines a new kind of border named shape. arglist must be a subset of the "canonical" arglist
below (using string-equal to do the comparison):
(&key stream record left top right bottom)

body
is the code that actually draws the border. It has lexical access to stream, record, left,
top, right, and bottom, which are respectively, the stream being drawn on, the output record
being surrounded, and the coordinates of the left, top, right, and bottom edges of the bounding
rectangle of the record. body may have zero or more declarations as its first forms.


Page 175 Table of Contents Index Page 177
Chapters
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