aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/java/org/apache/fop/fo/PropertyManager.java38
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;
}