> -----Original Message-----
> From: Glen Mazza [mailto:[EMAIL PROTECTED]
>
> --- Luca Furini <[EMAIL PROTECTED]> wrote:
> >
> >
> > My first impression is that I would find somewhat
> > strange that the *page* breaking is not in the
> > *Page*SequenceLM! :-)
> >
>
> Well, under our current philosophy, our LM's map to
> the formatting object (here, the "page sequence"), not
> the areas they generate.  I was reminded a bit on that
> a few weeks ago by Andreas and Simon.
>
> You may recall, I recommended at the time that we have
> BodyRegionLM and a SideRegionLM instead of a FLM and a
> StaticContentLM.  Under this scenario, PSLM controls
> complete page-by-page layout, and delegates to the
> BRLM and SRLM to do the body region or side areas.
>
> But if we have an "FLM" instead, my thinking is that
> it should perhaps process the entire
> fo:flow--including the creation of multiple
> page-viewport-areas in order to consume that flow.
>

Hmm.. This does seem to be one of those situations where the logic could be
placed anywhere. However, taking into account Luca's remarks, I would be
inclined to see it as:

"The PSLM creates the page-viewports, and passes them on to
 1. the FLM --which controls layout of a subset of the areas
      generated by descendants of the fo:flow
      (ultimately also floats/footnotes)
 2. the SCLMs --which control layout of the areas generated
      by the descendants of the fo:static-contents
      (+ possible retrieved markers from the subset processed
      by the FLM)"

In this respect, the page-breaking logic is already at its most appropriate
place.
The FLM needs only a part of the total page-vp, so it makes sense to handle
the creation/initialization of the viewport one level up.

> > A more serious comment is that some formatting
> > objects (footnotes and before floats) generates
> > "page-level-out-of-line-areas", whose placement,
> > according to the recommendation (4.2.5), "is
> > controlled by the fo:page-sequence ancestor";
<snip />
> As for "location controlled by the fo:page-sequence
> ancestor", that could simply mean that the
> fo:page-sequence defines the page margins and the side
> region dimensions.  The footnote is just "above" the
> region-after, and before-floats are just "below" the
> region-before, hence the fo:page-sequence determines
> its location.  This wouldn't necessarily mean that the
> actual layout of these objects needs to be done by the
> PSLM.

Indeed not. After all, both before-floats and footnotes *are* descendants of
an fo:flow (assigned to the region-body, IIC --see constraints for fo:float
w/ float="before" and footnotes(*))

> > so, if the PSLM must handle footnotes and before floats
> > (influencing the available bpd for the normal areas) it
> > must handle the whole page breaking process.
> >

No, the FLM must handle the footnotes and before-floats, but the PSLM must
handle the page-breaking...
Since the out-of-line objects are constrained to the flow (region-body), it
is not necessary to handle their processing higher up.

> Well, the available maximum bpd can be accessed from
> the  area.BodyRegion child of the PageViewport--this
> value is calculated automatically upon initialization
> of a PageViewport.  As you can see from section
> 6.10.1.3[1], these two areas consume space from the
> main-reference-area.  So it appears that all that
> would be necessary is for the FLM to create a
> PageViewport, and if a flow has a before-float or
> footnote, reduce that bpd for the regular
> normal-reference-areas.  (Also, to add the
> footnote/before-float separators in.)

The _creation_ of the page-viewports should be done by the PSLM, while
_dividing_ the assigned region-viewport's bpd over floats, footnotes and/or
block content is up to the FLM.

Cheers,

Andreas

(*) http://www.w3.org/TR/xsl/slice6.html#fo_float
    http://www.w3.org/TR/xsl/slice6.html#fo_footnote

Reply via email to