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.


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.


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.


Reply via email to