diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/java/org/apache/fop/fo/PropertyManager.java | 38 |
1 files changed, 34 insertions, 4 deletions
diff --git a/src/java/org/apache/fop/fo/PropertyManager.java b/src/java/org/apache/fop/fo/PropertyManager.java index cbb5f98fc..467254442 100644 --- a/src/java/org/apache/fop/fo/PropertyManager.java +++ b/src/java/org/apache/fop/fo/PropertyManager.java @@ -311,10 +311,40 @@ public class PropertyManager implements Constants { 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; } |