|
The display-group Flow
ObjectBy
Didier PH Martin, July 24, 1999
Contents
-
Home Page
Introduction
The
Visual Model
-
The
Logical Model
-
Models
Synthesis
-
display-group
Characteristics
IntroductionThe Display-group object
is a visual container It is an area that contains other areas. As its name
implies, it groups other elements like for instance paragraph into a
container area
DSSSL specification
extract
-
A display-group flow object class is formatted to produce the
concatenation of the areas produced by each of its children. It has a
single principal port. Its children shall all be displayed, and it is
itself displayed.
The display-group flow object
is useful to aggregate into a single visual entity (i.e. area) several
flow objects.
The Visual
Model
In DSSSL, all visual objects
are areas, as defined in the specifications:
"An area is a rectangular box with
a fixed width and height. An area is also a specification of a set
of marks that can be imaged on a presentation medium. An area may
contain other areas." |
More particularly, in the
DSSSL specifications, the display-group object is a display
area:
"Display areas are areas that are
not directly parts of lines. A display area has
an inherent absolute orientation.
NOTE: Informally, the box has an arrow on it
saying 'this way up'.
The
positioning of display areas is specified by area containers. An area
container has its own coordinate system
with its origin at the lower left corner, the positive x-axis
extending horizontally to the right and the
positive y-axis extending vertically
upward." |

- For instance, an
area container could be a page flow object. Thus, a page can contain
display-group objects. This is because, a page object is a display
area.
-
-
-
- The area container
imposes a direction to contained display areas. For instance, a page
object (an area container) imposes a direction to a set of display-group
(display areas). In the case of most occidental languages, the direction
is top down.
-
- A display-group is a
display-area containing other display area objects like for instance
paragraph objects. It can contains also inline objects like sequence
objects.
The
Logical Model
-
"A
display-group flow object class is formatted to produce the
concatenation of the areas produced by each of its children. It
has a single principal port. Its children shall all be displayed,
and it is itself displayed." |
Several DSSSL flow objects
are collection containers. Thus, a particular flow object may be perceived
as a flow object collection and simultaneously as a flow object layout
configuration. In the case of the display-group flow object, this
means that it contains a single flow objects collection (also called a
stream), this collection is laid out within a bounded area. So,
like all other DSSSL flow objects, a display-group flow object has two
facets:
- An abstract one - a single
collection of flow objects.
- A visual one - a
particular flow objects layout within a bounded area.
So, the display-group object
is contained in a parent's collection (i.e. a stream attached to the
parent's port). And itself, it is a flow object container having a
single port (i.e. collection). For example, a simple-page-sequence flow object contains several
display-group flow objects and one of these display-group flow object
contains:
- a paragraph flow
object
- a rule flow
object
- a sequence flow
object
A flow object collection
(i.e. a stream) is ordered. Thus, in the example above, the
paragraph object contains three (3) objects. The first one in the
collection is to be displayed first, the last one is the last to be
displayed. This is why we call these objects: flow objects. A flow
has an implicit order. Thus, objects contained in a stream (i.e.
collection) are placed within the container area one after the other, in
the same position they have within the collection.
Models
synthesis
A display-group flow object
is basically a flow object collection container. This allows to treat the
collection as a single visual entity (i.e. an area).
To illustrate the usefulness
of the display-group object we'll use this latter flow object to implement
a bulleted list as shown in the example below
- XML document:
- <body>
- <bullet-list>
- <item>
- <par> this is my first item in the bullet
list</par>
- </item>
- <item>
- <par>this is my second item in the bullet
list</par>
- </item>
- </bullet-list>
- </body>
-
- DSSSL script:
- (element bullet-list
- (make display-group
- space-before: 20pt
- space-after: 10pt
- (process-children)
- )
- )
-
- (element (bullet-list item)
- (make display-group
- space-before: 5pt
- (process-children)
- )
- )
-
- (element (item par)
- (make paragraph
- first-line-start-indent:
-.25in
- (make line-field
-
field-width: .25in
- )
- (literal "\U-2022")
- (process-children)
- )
- )
Note: The code \U-2022 is the Unicode specification
for the bullet symbol. |
The visual model for the
previous DSSSL specification could be schematized in the figure
below
We created a display-group to
control the formatting around the bulleted list. As made explicit by the
figure above, the whole construct is visually contained in a
display-group, then each bullet item itself enclosed in a display-group.
The former used to visually aggregate the bullets and the latter to
aggregate the line-field and the paragraph.
Display-group characteristics
The display-group property
set provides more information to the rendering engine on how to display
the flow object. How display-group object properties are translated into a
visual model is shown in the figure below
The display-group
property set is composed of 11 properties as shown in the table below.
Some of these properties are inherited from container objects some are
not.
Property name |
Description |
coalesce-id: |
is a string specifying the
coalesce-id of the flow object, or #f if the flow object has no
coalesce-id. This characteristic is not inherited. The default value
is #f. If the areas from two or more flow objects with the same
coalesce-id are flowed into the same top-float, bottom-float, or
footnote zone of a column-set area, then the areas from the second
and subsequent such flow objects shall be discarded. A value other
than #f is allowed for this characteristic only if the flow object
is flowed into a top-float, bottom-float, or footnote zone of a
column-set. |
position-preference: |
is either #f or one of the
symbols top or bottom. This applies if the flow object is directed
into a port on a column-set-sequence flow object that is flowed into
both the top-float and bottom-float zones of a column-subset and
indicates whether the areas from this flow object may be flowed into
only one of the zones. This characteristic is not inherited. The
default value is #f. |
space-before: |
is an object of type
display-space specifying space to be inserted before, in the
placement direction, the areas produced by the flow object. This
characteristic is not inherited. The default is for no space before
to be inserted. |
space-after: |
is an object of type
display-space specifying space to be inserted after, in the
placement direction, the areas produced by the flow object. This
characteristic is not inherited. The default is for no space after
to be inserted. |
keep-with-previous?: |
is a boolean specifying
whether the flow object shall be kept in the same area as the
previous flow object. This characteristic is not inherited. The
default value is #f. |
keep-with-next?: |
is a boolean specifying
whether the flow object shall be kept in the same area as the next
flow object. This characteristic is not inherited. The default value
is #f. |
break-before: |
is #f or one of the symbols page, page-region, column, or column-set specifying that the flow object shall start an area of that
type. This characteristic is not inherited. The default is
#f. |
break-after: |
is #f or one of the symbols page, page-region, column, or column-set specifying that the flow object shall end an area of that
type. This characteristic is not inherited. The default is
#f. |
keep: |
is one of the
following:
- #t meaning that the areas produced by this flow object shall
be kept together within the smallest possible area.
- the symbol
page indicating that the areas produced
by the flow object shall lie within the same page; in this case,
the flow object shall have an ancestor flow object of class
page-sequence.
the symbol column-set
indicating that the
areas produced by the flow object shall lie within the same column
set; in this case, the flow object shall have an ancestor of class
column-set-sequence.
the symbol column
indicating that the
areas produced by the flow object shall lie within the same column
set, and that the first column that each area spans in the column
set shall be the same.
#f indicating that this characteristic is to be ignored.
This characteristic is not inherited. The default value is
#f. |
may-violate-keep-before?: |
is a boolean which, if true, specifies that constraints imposed
by the keep: characteristics of ancestor flow
objects on the relative positioning of this flow object and its
previous flow object may not be respected. This characteristic is
not inherited. The default value is #f. |
may-violate-keep-after?: |
is a boolean which, if true, specifies that constraints imposed
by keep: characteristics of ancestor flow
objects on the relative positioning of this flow object and its next
flow object may not be respected. This characteristic is not
inherited. The default value is
#f. |
All trademarks herein are the property
of their respective owners. Copyright © 1999-2003 Didier
PH Martin,
All rights reserved. Created by Didier PH Martin,
modified: February 18, 2003
|