Sorry for the long post... Just trying to put a few ideas together. > From: Finn Bock [mailto:[EMAIL PROTECTED] > <snip /> > Pardon me for repeating what might be obvious,
Well, it wasn't to me, so... thanks in advance > but I'll like to take > a look at what information we want to store at each FObj. If you look at the big picture, I think this could as well be none ( a null vector ) for FObj's with nothing but inherited props. Their property accessor should be able to perform the logic 'if absent in this FObj's prop specs, get the specified/computed value (or the property, in case the value is still unresolved) for the correct FObj', instead of having to redirect the call to the immediate parent's Propertylist, which may or may not have to do the same, who knows... the parser probably did at some point, but it forgot, so did we and now it's got us frantically climbing up the FOTree --like monkeys :) > I can come up with 3 different strategies: > > 1) Only store the specified properties. That is what HEAD does now. ^^^^ ? Is this meant ironically? :) IIC, if not optimized or normalized in some way, overconstraint would lead to a drastically high object instantiation rate, not? Besides that, the spec *does* enforce verbosity in some quite trivial and widely used constructs... like, <sigh/>, tables > From: Peter B. West [mailto:[EMAIL PROTECTED] > <snip /> > Alt-design (trying the hyphen for a while) takes different approaches at > different times. While building the subtree of any node, all of the > properties are maintained in a HashMap, along with a BitSet of specified > properties. > > When the subtree construction is complete, the HashMap and BitSet are > used to build the sparse array of only the relevant *resolved* property > values (not properties - one of the differences with HEAD) and then > thrown away. > Yum... so a Collection of Objects is traded for a handful of --what? (Would this be the propertyValue singletons you mention?) What happens with 'unresolvable' Props at that point (for the cases you mention below)? Do they get thrown away, or placed in a sort of Property stack for later accessing? If so, how exactly do you indicate in the FObj (or FONode) that the property in question still has to be resolved? So that, when Layout asks for this property, it is signaled that some computations still need to be made? (Pardon me if these questions mean I haven't read your docs thoroughly enough; I did read some of them, but it seems I still miss a bit of technical background to fully understand it.) > This approach has to be modified in two environments - fo:static-content > and fo:marker. In the case of fo:marker, the inherited environment is > not known at parse time, and in the case of static-content, the > appropriate fo:retrieve-marker subtrees are not know until the > region-body area tree is constructed. > Yes... cases I was overlooking --not so plain inheritance as the FObj's for static-content appear only once or twice every page-sequence, but their inherited properties and values vary, depending on the further processing of the tree. Still, I'm wondering whether you really need to re-parse them (as you indicated)... Couldn't you just, say, keep the Property alive and alter its value when needed? (If this would save you any re-initializing, I mean) The re-parsing idea seems very interesting to be able to say after a threesome of pages have been processed: collapse the branches of the FOTree that have already been layed out to the level below the current fo:flow (or fo:block; in any case some logical point of reference). If downstream, it turns out that their layout needs to be modified again (what are the odds? any way of predicting this?), one could trigger a re-parse from the subtree in question onwards. (This would, I think, save us some memory) Perhaps the same approach can be taken WRT tables: collapse all finished rows, so their cells are released. When their layed-out state turns out to be insufficient, start processing again from the row in question onwards, *with* the knowledge of what lies ahead this time... > From: Glen Mazza [mailto:[EMAIL PROTECTED] > --- "Andreas L. Delmelle" <[EMAIL PROTECTED]> > > What I'm very concerned about, for example, are cases like > > tables, where it would be quite awkward to have the TableCell > > FObj's reference their own copy of a Property instance > > To put it more precisely, the individual Properties of > an FObj are currently stored in the PropertyList of > that FOBj. <snip /> > This sounds like it could be an excellent idea--a > PropertyRepository ( ... ) could be a very useful > tool for FO Tree Building. Prior to creating any > Property instance for any FO's array, we send the > specs of the needed property to the > PropertyRepository, and it gives us either (1) a > brand-new property instance, or (2) a reference to an > already-created one. Aha! So this approach could also be used to recycle some of the HashMap and BitSet that get thrown away in alt-design, correct? Cheers, Andreas