16.3 Types of Output Records

  • 16.3.1 Standard Output Record Classes
  • 16.3.2 Graphics Displayed Output Records
  • 16.3.3 Text Displayed Output Record
  • 16.3.4 Top-Level Output Records
  • This section discusses several types of output records, including two standard classes of output records and the displayed output record protocol. [annotate]

    16.3.1 Standard Output Record Classes

    standard-sequence-output-record   [Class]
              

    The standard instantiable class provided by CLIM to store a relatively short sequence of output records; a subclass of output-record. The insertion and retrieval complexity of this class is O(n). Most of the formatted output facilities (such as formatting-table) create output records that are a subclass of standard-sequence-output-record. [annotate]

    [annotate]

    standard-tree-output-record   [Class]
              

    The standard instantiable class provided by CLIM to store longer sequences of output records. Typically, the child records of a tree output record will be maintained in some sort of sorted order, such as a lexicographic ordering on the x and y coordinates of the children. The insertion and retrieval complexity of this class is O(log n). [annotate]

    [annotate]

    16.3.2 Graphics Displayed Output Records

    Graphics displayed output records are used to record the output produced by the graphics functions, such as draw-line*. Each graphics displayed output record describes the output produced by a call to one of the graphics functions. [annotate]

    The exact contents of graphics displayed output records is unspecified, but they must store sufficient information to be able to exactly redraw the original output at replay time. The minimum information that must be captured for all graphics displayed output records is as follows: [annotate]

    graphics-displayed-output-record   [Protocol Class]
              

    The protocol class that corresponds to output records for the graphics functions, such as draw-line*. This is a subclass of displayed-output-record. If you want to create a new class that behaves like a graphics displayed output record, it should be a subclass of graphics-displayed-output-record. All instantiable subclasses of graphics-displayed-output-record must obey the graphics displayed output record protocol. [annotate]

    [annotate]

    graphics-displayed-output-record-p  object [Protocol Predicate]
              

    Returns true if object is a graphics displayed output record, otherwise returns false. [annotate]

    [annotate]

    16.3.3 Text Displayed Output Record

    Text displayed output records are used to record the textual output produced by such functions as stream-write-char and stream-write-string. Each text displayed output record corresponds to no more than one line of textual output (that is, line breaks caused by terpri and fresh-line create a new text output record, as do certain other stream operations described below). [annotate]

    The exact contents of text displayed output records is unspecified, but they must store sufficient information to be able to exactly redraw the original output at replay time. The minimum information that must be captured for all text displayed output records is as follows: [annotate]

    text-displayed-output-record   [Protocol Class]
              

    The protocol class that corresponds to text displayed output records. This is a subclass of displayed-output-record. If you want to create a new class that behaves like a text displayed output record, it should be a subclass of text-displayed-output-record. All instantiable subclasses of text-displayed-output-record must obey the text displayed output record protocol. [annotate]

    [annotate]

    text-displayed-output-record-p  object [Protocol Predicate]
              

    Returns true if object is a text displayed output record, otherwise returns false. [annotate]

    The following two generic functions comprise the text displayed output record protocol. [annotate]

    [annotate]

    add-character-output-to-text-record  text-record character text-style width height baseline [Generic Function]
              

    Adds the character character to the text displayed output record text-record in the text style text-style. width and height are the width and height of the character in device units, and are used to compute the bounding rectangle for the text record. baseline is the new baseline for characters in the output record. [annotate]

    Note: Measuring the total width character at a time like this looks like it would run into difficulties with ligatures in the underlying font system. [edit]-- Matt Seddon 2022-10-24 11:04Z
     

    [annotate]

    add-string-output-to-text-record  text-record string start end text-style width height baseline [Generic Function]
              

    Adds the string string to the text displayed output record text-record in the text style text-style. start and end are integers that specify the substring within string to add to the text output record. width and height are the width and height of the character in device units, and are used to compute the bounding rectangle for the text record. baseline is the new baseline for characters in the output record. [annotate]

    [annotate]

    Note: What about the ink? The clipping region? [edit]-- Gilbert Baumann 2013-12-29 23:28Z
     

    text-displayed-output-record-string  text-record [Generic Function]
              

    Returns the string contained by the text displayed output record text-record. This function returns objects that reveal CLIM's internal state; do not modify those objects. [annotate]

    Note: SURROUNDING-OUTPUT-WITH-BORDER :SHAPE :UNDERLINE requires an ability to get a baseline position, which is absent in the text output record protocol. [edit]-- Alexey Dejneka 2002-11-21 04:17Z
     

    [annotate]

    16.3.4 Top-Level Output Records

    Top-level output records are similar to ordinary output records, except that they must maintain additional state, such as the information required to display scroll bars. [annotate]

    stream-output-history-mixin   [Class]
              

    This class is mixed into some other output record class to produce a new class that is suitable for use as a a top-level output history. This class is not intended to be instantiated. [annotate]

    When the bounding rectangle of an member of this class is updated, CLIM implementations must update any window decorations (such as scroll bars) associated with the stream with which the output record history is associated. [annotate]

    [annotate]

    standard-tree-output-history   [Class]
              

    The standard instantiable class provided by CLIM to use as the top-level output history. This will typically be a subclass of both standard-tree-output-record and stream-output-history-mixin. [annotate]

    [annotate]

    standard-sequence-output-history   [Class]
              

    Another instantiable class provided by CLIM to use for top-level output records that have only a small number of children. This will typically be a subclass of both standard-sequence-output-record and stream-output-history-mixin. [annotate]

    [annotate]