I like the patch and the way RelativeNumericProperty holds and evaluates an expression tree (except my different preference for storing layout information, as discussed). This is really nice and works well:
v = "(((0mpt +(4000mpt +20.0%)) +0mpt) +0mpt)"
I found a few things that may need modification:
In LengthBase.java:
/** array of valid percent-based length types */ public static final int[] PERCENT_BASED_LENGTH_TYPES = { CUSTOM_BASE, FONTSIZE, INH_FONTSIZE, CONTAINING_BOX, CONTAINING_REFAREA } ;
add BLOCK_WIDTH and BLOCK_HEIGHT
(Is this variable used anywhere?)
I don't think so.
Block, BlockContainer, Table, Region, PageLayoutManager: getters and setters should be removed again?
Yes.
In LineLayoutManager.java:
private Length iTextIndent;
remove the i from the name; it stands for int.
Yes.
regards, finn