12.6.28 Flow Object Classes for Online Display
The facilities described in this clause require the online feature.
12.6.28.1 Scroll Flow Object Class
A scroll flow object class is used as the top-level flow object for online display that does not divide output into pages.
It has a single principal port, which accepts displayed flow objects.
The size of the flow object in the direction perpendicular to the filling-direction is determined by the viewing environment.
This flow object has the following characteristics:

•  filling-direction: is one of the symbols top-to-bottom, left-to-right, or right-to-left.  It specifies the filling-direction of the area container.  The filling-direction of the area container may be perpendicular to the placement direction. The initial value is top-to-bottom.

•  writing-mode: is one of the symbols left-to-right, right-to-left, or top-to-bottom.  The direction determined by the writing-mode shall be perpendicular to the placement direction.  The initial value is left-to-right. This is used to determine which side of the flow object the start-margin: and end-margin: characteristics apply to.

•  background-color: is either #f or an object of type color that specifies the color in which the marks for the flow object's background should be made. The initial value is #f.

•  background-layer: is an integer specifying the layer of the marks of the areas resulting from the background of a flow object. The initial value is -1.

•  background-tile: is either #f or a public identifier specifying an image that should be repeated to cover the background of the scroll.  The initial value is #f.

•  start-margin: is a length-spec specifying the distance from the edge of the resulting area that is first in the writing-mode direction to the nearest edge of the text area.  The initial value is 0pt.

•  end-margin: is a length-spec specifying the distance from the edge of the resulting area that is last in the writing-mode direction to the nearest edge of the text area. The initial value is 0pt.
12.6.28.2 Multi-mode Flow Object Class
A multi-mode flow object is a flow object with two or more modes of presentation. The flow object can be switched between these modes of presentation in a system-dependent way.

NOTE 117

An implementation might present a menu of the different modes. Alternatively, clicking on the formatted flow object might cycle through the modes.
This flow object is inlined or displayed according to its content and mode of presentation.
This flow object has the following characteristics:

•  multi-modes: is a list. The number of members of the list gives the number of modes of presentation. The list shall have at least two members. Each member of the list can be a specification of a port or a list consisting of a specification of a port and a string giving a description of the mode. The specification of a port is either #f specifying the principal port or a symbol specifying a named port. A port specification shall not occur more than once in the list. There shall be one port specification of #f in the list. The corresponding mode is the principal mode.

NOTE 118

The string might be displayed in a menu.

This characteristic is not inherited and shall be specified.

•  principal-mode-simultaneous?: is a boolean specifying whether the principal mode is simultaneous with the other modes.  If it is, then when the current presentation mode is a mode other than the principal mode, both the content of the port for the principal mode and the content of the port for the current mode shall be displayed. The initial value is #f.
The flow object has one port for each mode. The content of that port specifies the presentation in the corresponding mode. Initially, the flow object shall be displayed using the principal mode.

NOTE 119

For example, an icon which when clicked causes a window to be popped up could be represented by a multi-mode flow object with two ports, the first containing a character flow object representing an icon and the second containing a scroll flow object. In this case, the principal-mode-simultaneous?: characteristic would be true.
12.6.28.3 Link Flow Object Class
A link flow object represents a hypertext link that can be interactively traversed, typically by clicking on the areas representing the flow object and its content.  A link has a single principal port, which can contain both inlined and displayed flow objects.  Link flow objects can be nested, and the innermost link is effective.  It has the following characteristic:

•  destination: is either #f or an object of type address or a list of one or more objects of type address.  See section 12.5.8, Addresses.  This characteristic is not inherited and shall be specified.  A value of #f is used for a nested link and indicates that the contents of the flow object shall not be considered part of the containing link.
12.6.28.4 Marginalia Flow Object Class
The marginalia flow object class is used to contain flow objects whose resulting areas shall be attachment areas for the line in which the marginalia flow object occurs.  See section 12.3.4, Attachment Areas.  The marginalia flow object has a single principal port which shall contain only inlined flow objects.  A marginalia flow object shall have an ancestor flow object that is of class paragraph.
The behavior when there is more than one marginalia area attached to a single line is system-dependent.
A marginalia flow object has the following characteristics:

•  marginalia-sep: is a length-spec specifying the separation for the attachment. The initial value is 0pt.

•  marginalia-side: is one of the symbols start or end specifying which side of the line the marginalia area shall be attached to. The initial value is start.

•  marginalia-keep-with-previous?: specifies whether the marginalia area shall be associated with the last area of the previous flow object instead of the first area resulting from the following flow object. The initial value is #f.