Hi Stephan,

Stephan Thesing wrote:
> Hello,
> 
> just a short status / question update.
> 
<snip/>
> 
> What remains is layout and producing the change bar areas.
> 
> If I read the spec right, the intended semantics of the change-bar-elements 
> is the following:
>  - for all elements generating areas that are under the influence of
>      a change bar, add fixed areas as tall as the generated areas and
>      placed beside the column of that area as given by the change bar
>      properties.
>  - "being under the influence of  a change bar" is defined by the file
>     order of elements in the input.
>    I.e., any element between a change-bar-start and corresponding 
> change-bar-end (same class) is influenced by that change bar.
>    For me, that means that an element can be under the influence of multiple 
> change bars, naturally.

The area tree described in the Recommendation is non-normative,
therefore we are free to deviate from it as long as the final visual
result is the same.

And I’m actually not keen on the idea of generating a change-bar area
for /each/ area under the influence of a change bar. This will give many
overlapping areas (for example an fo:block produces a normal area, plus
possibly a line-area, which will itself contain many inline areas. If
a change-bar area must be generated for each of them...). The visual
result is likely to look non-continuous, as the borders of a table for
which we have already had complaints. Ideally a single area would be
generated on each column.


> My idea is now along the following lines:
>  - Remember for each element during parsing the change bars it is influenced 
> by.
>  - After layout, go over all areas produced by those influenced elements
>     and add the areas for the change bars (thus, only an area with proper
>      border attributes).

It all depends on how this is implemented, therefore I’m awaiting your
patch. But that seems to imply a two-pass process that I’m not sure we
want. Imagine a change-bar that starts on page 2 and ends on page 50. We
don’t want to wait that the areas for page 50 have been created to add
the change-bar areas on page 2.


> Can this be realizes in such a way in FOP?

To be honest I don’t have a precise idea of how to implement that in
FOP. But maybe that could be done using some kind of listener. An event
would be generated when a change-bar-begin is encountered. It would be
handled by ‘the proper LayoutManager’ that would record the current
offset from the top of the applicable reference-area. Once the
‘change-bar-end’, ‘bottom-of-column’ or ‘end-of-document’ event occurs,
it creates the change-bar area.

Where should that code be put? Good question... PageBreaker maybe,
although StaticContentLM must also do something.

Moreover, change-bar areas must also be produced for out-of-line areas
like footnotes, returned by objects that are under the influence of the
change-bar.


> I appreciate any comments and suggestions!

Hoping the above gives you some hints,
Vincent

Reply via email to