Page 143 Table of Contents Index Page 145
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 16. OUTPUT RECORDING

subclass of bounding-rectangle. If you want to create a new class that behaves like a dis-
played output record, it should be a subclass of displayed-output-record. Subclasses of
displayed-output-record must obey the displayed output record protocol.

All displayed output records are mutable.

=> displayed-output-record-p object [Function]
Returns true if object is a displayed output record, otherwise returns false.

=> :x-position [Init Arg]
=> :y-position [Init Arg]
=> :parent [Init Arg]
All subclasses of either output-record or displayed-output-record must handle these three
initargs, which are used to specify, respectively, the x and y position of the output record, and
the parent of the output record.

=> :size [Init Arg]
All subclasses of output-record must handle the :size initarg. It is used to specify how much
room should be left for child output records (if, for example, the children are stored in a vector).
It is permissible for :size to be ignored, provided that the resulting output record is able to
store the specified number of child output records.

16.2.1 The Basic Output Record Protocol

All subclasses of output-record and displayed-output-record must inherit or implement
methods for the following generic functions.

When the generic functions in this section take both record and a stream arguments, CLIM im-
plementations will specialize the stream argument for the standard-output-recording-stream
class and the record argument for all of the implementation-specific output record classes.

=> output-record-position record [Generic Function]
Returns the x and y position of the output record record as two rational numbers. The position of
an output record is the position of the upper-left corner of its bounding rectangle. The position
is relative to the stream, where (0;0) is (initially) the upper-left corner of the stream.

=> (setf* output-record-position) x y record [Generic Function]
Changes the x and y position of the output record record to be x and y (which are rational
numbers), and updates the bounding rectangle to reflect the new position (and saved cursor
positions, if the output record stores it). If record has any children, all of the children (and their
descendants as well) will be moved by the same amount as record was moved. The bounding
rectangles of all of record's ancestors will also be updated to be large enough to contain record.
This does not replay the output record, but the next time the output record is replayed it will
appear at the new position.


Page 143 Table of Contents Index Page 145
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