On Sun, Feb 15, 2004 at 10:43:12PM +0100, Finn Bock wrote:
> [Simon Pepping]
> >I think it
> >would be a better design if, in order to resolve the percent-based
> >properties, you would not climb the FO tree but the Area tree. That
> >avoids feeding back results from the Area tree into the FO tree.
> >The XSL spec says (XSL-PR/slice3.html#section-N1208-Conceptual-Procedure):
> >'The formatting object supplies parameters to its children based on the
> >traits of areas already in the area tree, possibly including areas
> >generated by the formatting object or its ancestors.'
> >Holding those parameters in the FO tree is one solution. Extracting
> >them from the area tree layed out up to that point is another
> But there is *no* areas layed out or even created at the point where we
> need resolved length. When getNextBreakPoss is called, we only have a
> series of BreakPoss's stored in different layout managers.
> The Area objects are created much later when we have BreakPoss's for an
> entire page. PageLM then calls addAreas which recursively creates all
> the areas for the page.
Indeed, I had not thought of that.
> >which has the advantage that it does not load the FO tree
> >with information that it does not need to have.
> I initially had a separate PropertyContext object where the length was
> stored. The FO element then had a reference to the PropertyContext and
> there was a PropertyContext for every FO. But since there was a
> one-to-one correspondence between the FO's and the PropertyContexts I
> decided to put the information directly in the FO's instead.
> Somehow, in our current design, the information must be stored in an
> object that exists:
> - when the properties are parsed.
> - when the break possibilities are created.
> The FO nodes fulfills both requirements.
> Perhaps the dimensions should be stored in the layout manager tree but
> the LM tree is not available when the the properties are parsed and
> there is no way to get from a FO to the LM's that the FO creates.
I see the problem now. Thanks for the explanation.
home page: http://www.leverkruid.nl