From: Jeremias Maerki Date: Wed, 2 Aug 2006 09:28:51 +0000 (+0000) Subject: Merge from Temp_Floats branch: X-Git-Tag: fop-0_93~143 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=c0be6dbf9aa9f300b7d7a76da49a9677e8a4a375;p=xmlgraphics-fop.git Merge from Temp_Floats branch: Fixed a bug with indent handling when margins are used on a surrounding block and not start/end-indent. git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@427939 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/src/java/org/apache/fop/fo/properties/IndentPropertyMaker.java b/src/java/org/apache/fop/fo/properties/IndentPropertyMaker.java index 0eb857c31..ebc1b80f0 100644 --- a/src/java/org/apache/fop/fo/properties/IndentPropertyMaker.java +++ b/src/java/org/apache/fop/fo/properties/IndentPropertyMaker.java @@ -94,33 +94,32 @@ public class IndentPropertyMaker extends CorrespondingPropertyMaker { Numeric border = getCorresponding(borderWidthCorresponding, propertyList).getNumeric(); int marginProp = pList.getWritingMode(lr_tb, rl_tb, tb_rl); - Numeric margin; // Calculate the absolute margin. if (propertyList.getExplicitOrShorthand(marginProp) == null) { Property indent = propertyList.getExplicit(baseMaker.propId); if (indent == null) { - //Neither start-indent nor margin is specified, use inherited + //Neither indent nor margin is specified, use inherited return null; + } else { + //Use explicit indent directly + return indent; } - margin = propertyList.getExplicit(baseMaker.propId).getNumeric(); - margin = NumericOp.subtraction(margin, - propertyList.getInherited(baseMaker.propId).getNumeric()); - margin = NumericOp.subtraction(margin, padding); - margin = NumericOp.subtraction(margin, border); } else { - margin = propertyList.get(marginProp).getNumeric(); + //Margin is used + Numeric margin = propertyList.get(marginProp).getNumeric(); + + Numeric v = new FixedLength(0); + if (!propertyList.getFObj().generatesReferenceAreas()) { + // The inherited_value_of([start|end]-indent) + v = NumericOp.addition(v, propertyList.getInherited(baseMaker.propId).getNumeric()); + } + // The corresponding absolute margin-[right|left}. + v = NumericOp.addition(v, margin); + v = NumericOp.addition(v, padding); + v = NumericOp.addition(v, border); + return (Property) v; } - Numeric v = new FixedLength(0); - if (!propertyList.getFObj().generatesReferenceAreas()) { - // The inherited_value_of([start|end]-indent) - v = NumericOp.addition(v, propertyList.getInherited(baseMaker.propId).getNumeric()); - } - // The corresponding absolute margin-[right|left}. - v = NumericOp.addition(v, margin); - v = NumericOp.addition(v, padding); - v = NumericOp.addition(v, border); - return (Property) v; } private boolean isInherited(PropertyList pList) { @@ -166,7 +165,6 @@ public class IndentPropertyMaker extends CorrespondingPropertyMaker { pl = pl.getParentPropertyList(); } - Numeric margin; // Calculate the absolute margin. if (propertyList.getExplicitOrShorthand(marginProp) == null) { Property indent = propertyList.getExplicit(baseMaker.propId); @@ -181,19 +179,20 @@ public class IndentPropertyMaker extends CorrespondingPropertyMaker { return indent; } } else { - margin = propertyList.get(marginProp).getNumeric(); - } - - Numeric v = new FixedLength(0); - if (isInherited(propertyList)) { - // The inherited_value_of([start|end]-indent) - v = NumericOp.addition(v, propertyList.getInherited(baseMaker.propId).getNumeric()); + //Margin is used + Numeric margin = propertyList.get(marginProp).getNumeric(); + + Numeric v = new FixedLength(0); + if (isInherited(propertyList)) { + // The inherited_value_of([start|end]-indent) + v = NumericOp.addition(v, propertyList.getInherited(baseMaker.propId).getNumeric()); + } + // The corresponding absolute margin-[right|left}. + v = NumericOp.addition(v, margin); + v = NumericOp.addition(v, padding); + v = NumericOp.addition(v, border); + return (Property) v; } - // The corresponding absolute margin-[right|left}. - v = NumericOp.addition(v, margin); - v = NumericOp.addition(v, padding); - v = NumericOp.addition(v, border); - return (Property) v; } private Property getCorresponding(int[] corresponding, PropertyList propertyList) diff --git a/status.xml b/status.xml index 1948a8c14..034634288 100644 --- a/status.xml +++ b/status.xml @@ -28,6 +28,10 @@ + + Fixed a bug with indent handling when margins are used on a surrounding block and + not start/end-indent. + Compatibility fix for GCJ (GNU Classpath): Using "UTF-16BE" instead of "UnicodeBigUnmarked" encoding. diff --git a/test/layoutengine/standard-testcases/block-container_start-indent.xml b/test/layoutengine/standard-testcases/block-container_start-indent.xml index 2a99e62fd..b21d332a3 100644 --- a/test/layoutengine/standard-testcases/block-container_start-indent.xml +++ b/test/layoutengine/standard-testcases/block-container_start-indent.xml @@ -36,11 +36,27 @@ + Outer block with start-indent="10pt" fo:block|fo:block fo:block|fo:block-container|fo:block + + fo:block|fo:block-container|fo:block + fo:block|fo:block-container|fo:block start-indent="0pt" + + + Outer block with margin-left="10pt" + + fo:block|fo:block + + fo:block|fo:block-container|fo:block + + + fo:block|fo:block-container|fo:block + fo:block|fo:block-container|fo:block start-indent="0pt" + @@ -48,27 +64,83 @@ - - - - + + + + - - - - + + + + - - - - + + + + - - + + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +