getSpace().getOptimum().getLength().getValue();
props.spaceAfter = this.propertyList.get(PR_SPACE_AFTER).
getSpace().getOptimum().getLength().getValue();
- props.startIndent = this.propertyList.get(PR_START_INDENT).
- getLength().getValue();
- props.endIndent = this.propertyList.get(PR_END_INDENT).
- getLength().getValue();
+
+
+ // For now we do the section 5.3.2 calculation here.
+ // This is a hack that doesn't deal correctly with:
+ // - Reference vs. non-reference areas.
+ // - writing mode, it mixes start and left.
+ // - inherited values of margins and indents.
+ // When the indents properties calculate this values correctly,
+ // the block below can be removed and replaced with simple
+ // props.startIndent = this.propertyList.get(PR_START_INDENT)
+ // props.endIndent = this.propertyList.get(PR_END_INDENT)
+ CommonBorderAndPadding bpProps = getBorderAndPadding();
+
+ int startIndent = 0;
+ if (props.marginLeft != 0) {
+ startIndent = props.marginLeft;
+ } else {
+ startIndent = this.propertyList.get(PR_START_INDENT).
+ getLength().getValue();
+ }
+ props.startIndent = startIndent +
+ bpProps.getBorderStartWidth(false) +
+ bpProps.getPaddingStart(false);
+
+ int endIndent = 0;
+ if (props.marginRight != 0) {
+ endIndent = props.marginRight;
+ } else {
+ endIndent = this.propertyList.get(PR_END_INDENT).
+ getLength().getValue();
+ }
+ props.endIndent = endIndent +
+ bpProps.getBorderEndWidth(false) +
+ bpProps.getPaddingEnd(false);
return props;
}