Funny! I just came to the same conclusion a few minutes ago. Simon's last comment brought me to that.
Simon: "I see no mention in section 5 of the spec that the trait value for start-indent is different from the computed property value." I then checked the BlockLayoutManager and realized that what Finn is now saying is exactly what's suboptimal about the current approach. I'm just now reworking the code to implement what Finn suggests. It also lets me forget about that silly and complicated MarginPropertyMaker I started to write. Thanks Guys helping me on the right track! On 12.01.2005 08:42:24 Finn Bock wrote: > [Simon] > > >>>There does not seem to be a need to add > >>>the inherited value later; the property maker already has done so. See > >>>IndentPropertyMaker.compute(PropertyList). It uses > >>>propertyList.getInherited(baseMaker.propId).getNumeric()) to get the > >>>inherited value. Earlier FOP developers understood this part well. > > [Jeremias] > > >>I understand, but I think you're talking exclusively about the property > >>resolution phase (right?) while I found that I need the computed value > >>of the margin property (not only the explicit one as is currently the > >>case) and the inherited start-indent for the layout manager code and to > >>set traits correctly. > > [Simon] > > > PropertyList().get(Constants.PR_START_INDENT) gets the computed value, > > that is, the value after property refinement. It is not the raw value > > stated in the FO file; FOP does not store that at all. FOP tries to do > > property refinement immediately. If that is not possible because the > > computed value depends on a trait of an area, FOP stores an > > expression, which can be computed at layout time. > > > > I see no mention in section 5 of the spec that the trait value for > > start-indent is different from the computed property value. > > The problem that Jeremias is trying to address is computing > space-[start,end] traits. Since only start-indent was computed correctly > he tried to compute space-[start,end] traits based on the > [start,end]-indent and to do that the inherited indent values (which has > just been added in IndentPropertyMaker) must be substracted. > > Which may indicate that calculating space-[start,end] traits based on > indents is probably not the right approach. > > I think the solution would be to: > - Store the [start,end]-indent traits. > - Let LayoutContent.refIPD be the reference IPD rather than the content > ipd of the parent. > - let the renderer keep track of the reference rect and use the > start-indent trait to locate the position of the content rectangle. Jeremias Maerki