You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fop-commits@xmlgraphics.apache.org by je...@apache.org on 2006/08/02 11:20:10 UTC
svn commit: r427938 - in /xmlgraphics/fop/branches/Temp_Floats:
src/java/org/apache/fop/fo/properties/IndentPropertyMaker.java status.xml
test/layoutengine/standard-testcases/block-container_start-indent.xml
Author: jeremias
Date: Wed Aug 2 02:20:10 2006
New Revision: 427938
URL: http://svn.apache.org/viewvc?rev=427938&view=rev
Log:
Fixed a bug with indent handling when margins are used on a surrounding block and not start/end-indent.
Modified:
xmlgraphics/fop/branches/Temp_Floats/src/java/org/apache/fop/fo/properties/IndentPropertyMaker.java
xmlgraphics/fop/branches/Temp_Floats/status.xml
xmlgraphics/fop/branches/Temp_Floats/test/layoutengine/standard-testcases/block-container_start-indent.xml
Modified: xmlgraphics/fop/branches/Temp_Floats/src/java/org/apache/fop/fo/properties/IndentPropertyMaker.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_Floats/src/java/org/apache/fop/fo/properties/IndentPropertyMaker.java?rev=427938&r1=427937&r2=427938&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_Floats/src/java/org/apache/fop/fo/properties/IndentPropertyMaker.java (original)
+++ xmlgraphics/fop/branches/Temp_Floats/src/java/org/apache/fop/fo/properties/IndentPropertyMaker.java Wed Aug 2 02:20:10 2006
@@ -94,33 +94,32 @@
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 @@
pl = pl.getParentPropertyList();
}
- Numeric margin;
// Calculate the absolute margin.
if (propertyList.getExplicitOrShorthand(marginProp) == null) {
Property indent = propertyList.getExplicit(baseMaker.propId);
@@ -181,19 +179,20 @@
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)
Modified: xmlgraphics/fop/branches/Temp_Floats/status.xml
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_Floats/status.xml?rev=427938&r1=427937&r2=427938&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_Floats/status.xml (original)
+++ xmlgraphics/fop/branches/Temp_Floats/status.xml Wed Aug 2 02:20:10 2006
@@ -28,6 +28,10 @@
<changes>
<release version="FOP Trunk">
+ <action context="Code" dev="JM" type="fix">
+ Fixed a bug with indent handling when margins are used on a surrounding block and
+ not start/end-indent.
+ </action>
<action context="Code" dev="JM" type="add" fixes-bug="39777" due-to="Vincent Hennebert">
Initial support for fo:float with float="before" and float="none".
</action>
Modified: xmlgraphics/fop/branches/Temp_Floats/test/layoutengine/standard-testcases/block-container_start-indent.xml
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_Floats/test/layoutengine/standard-testcases/block-container_start-indent.xml?rev=427938&r1=427937&r2=427938&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_Floats/test/layoutengine/standard-testcases/block-container_start-indent.xml (original)
+++ xmlgraphics/fop/branches/Temp_Floats/test/layoutengine/standard-testcases/block-container_start-indent.xml Wed Aug 2 02:20:10 2006
@@ -36,11 +36,27 @@
</fo:layout-master-set>
<fo:page-sequence master-reference="normal" white-space-collapse="true">
<fo:flow flow-name="xsl-region-body">
+ <fo:block font-style="italic">Outer block with start-indent="10pt"</fo:block>
<fo:block start-indent="10pt">
<fo:block background-color="yellow">fo:block|fo:block</fo:block>
<fo:block-container>
<fo:block background-color="orange">fo:block|fo:block-container|fo:block</fo:block>
</fo:block-container>
+ <fo:block-container start-indent="15pt" background-color="palegoldenrod" space-before="5pt">
+ <fo:block background-color="red">fo:block|fo:block-container|fo:block</fo:block>
+ <fo:block start-indent="0pt" background-color="red">fo:block|fo:block-container|fo:block start-indent="0pt"</fo:block>
+ </fo:block-container>
+ </fo:block>
+ <fo:block font-style="italic" space-before="10pt">Outer block with margin-left="10pt"</fo:block>
+ <fo:block margin-left="10pt">
+ <fo:block background-color="yellow">fo:block|fo:block</fo:block>
+ <fo:block-container>
+ <fo:block background-color="orange">fo:block|fo:block-container|fo:block</fo:block>
+ </fo:block-container>
+ <fo:block-container start-indent="15pt" background-color="palegoldenrod" space-before="5pt">
+ <fo:block background-color="red">fo:block|fo:block-container|fo:block</fo:block>
+ <fo:block start-indent="0pt" background-color="red">fo:block|fo:block-container|fo:block start-indent="0pt"</fo:block>
+ </fo:block-container>
</fo:block>
</fo:flow>
</fo:page-sequence>
@@ -48,27 +64,83 @@
</fo>
<checks>
<!-- Outer block with the start-indent property -->
- <eval expected="10000" xpath="/areaTree/pageSequence/pageViewport/page[1]/regionViewport/regionBody/mainReference/span/flow/block[1]/@start-indent"/>
- <eval expected="10000" xpath="/areaTree/pageSequence/pageViewport/page[1]/regionViewport/regionBody/mainReference/span/flow/block[1]/@space-start"/>
- <eval expected="350000" xpath="/areaTree/pageSequence/pageViewport/page[1]/regionViewport/regionBody/mainReference/span/flow/block[1]/@ipd"/>
- <eval expected="350000" xpath="/areaTree/pageSequence/pageViewport/page[1]/regionViewport/regionBody/mainReference/span/flow/block[1]/@ipda"/>
+ <eval expected="10000" xpath="//flow/block[2]/@start-indent"/>
+ <eval expected="10000" xpath="//flow/block[2]/@space-start"/>
+ <eval expected="350000" xpath="//flow/block[2]/@ipd"/>
+ <eval expected="350000" xpath="//flow/block[2]/@ipda"/>
<!-- yellow block -->
- <eval expected="10000" xpath="/areaTree/pageSequence/pageViewport/page[1]/regionViewport/regionBody/mainReference/span/flow/block[1]/block[1]/@start-indent"/>
- <eval expected="10000" xpath="/areaTree/pageSequence/pageViewport/page[1]/regionViewport/regionBody/mainReference/span/flow/block[1]/block[1]/@space-start"/>
- <eval expected="350000" xpath="/areaTree/pageSequence/pageViewport/page[1]/regionViewport/regionBody/mainReference/span/flow/block[1]/block[1]/@ipd"/>
- <eval expected="350000" xpath="/areaTree/pageSequence/pageViewport/page[1]/regionViewport/regionBody/mainReference/span/flow/block[1]/block[1]/@ipda"/>
+ <eval expected="10000" xpath="//flow/block[2]/block[1]/@start-indent"/>
+ <eval expected="10000" xpath="//flow/block[2]/block[1]/@space-start"/>
+ <eval expected="350000" xpath="//flow/block[2]/block[1]/@ipd"/>
+ <eval expected="350000" xpath="//flow/block[2]/block[1]/@ipda"/>
<!-- block-container -->
- <eval expected="10000" xpath="/areaTree/pageSequence/pageViewport/page[1]/regionViewport/regionBody/mainReference/span/flow/block[1]/block[2]/@start-indent"/>
- <eval expected="10000" xpath="/areaTree/pageSequence/pageViewport/page[1]/regionViewport/regionBody/mainReference/span/flow/block[1]/block[2]/@space-start"/>
- <eval expected="350000" xpath="/areaTree/pageSequence/pageViewport/page[1]/regionViewport/regionBody/mainReference/span/flow/block[1]/block[2]/@ipd"/>
- <eval expected="350000" xpath="/areaTree/pageSequence/pageViewport/page[1]/regionViewport/regionBody/mainReference/span/flow/block[1]/block[2]/@ipda"/>
+ <eval expected="10000" xpath="//flow/block[2]/block[2]/@start-indent"/>
+ <eval expected="10000" xpath="//flow/block[2]/block[2]/@space-start"/>
+ <eval expected="350000" xpath="//flow/block[2]/block[2]/@ipd"/>
+ <eval expected="350000" xpath="//flow/block[2]/block[2]/@ipda"/>
<!-- block-container's reference area -->
- <eval expected="350000" xpath="/areaTree/pageSequence/pageViewport/page[1]/regionViewport/regionBody/mainReference/span/flow/block[1]/block[2]/block[1]/@ipd"/>
- <eval expected="350000" xpath="/areaTree/pageSequence/pageViewport/page[1]/regionViewport/regionBody/mainReference/span/flow/block[1]/block[2]/block[1]/@ipda"/>
+ <eval expected="350000" xpath="//flow/block[2]/block[2]/block[1]/@ipd"/>
+ <eval expected="350000" xpath="//flow/block[2]/block[2]/block[1]/@ipda"/>
<!-- orange block inside the block-container -->
- <eval expected="10000" xpath="/areaTree/pageSequence/pageViewport/page[1]/regionViewport/regionBody/mainReference/span/flow/block[1]/block[2]/block[1]/block[1]/@start-indent"/>
- <eval expected="10000" xpath="/areaTree/pageSequence/pageViewport/page[1]/regionViewport/regionBody/mainReference/span/flow/block[1]/block[2]/block[1]/block[1]/@space-start"/>
- <eval expected="340000" xpath="/areaTree/pageSequence/pageViewport/page[1]/regionViewport/regionBody/mainReference/span/flow/block[1]/block[2]/block[1]/block[1]/@ipd"/>
- <eval expected="340000" xpath="/areaTree/pageSequence/pageViewport/page[1]/regionViewport/regionBody/mainReference/span/flow/block[1]/block[2]/block[1]/block[1]/@ipda"/>
+ <eval expected="10000" xpath="//flow/block[2]/block[2]/block[1]/block[1]/@start-indent"/>
+ <eval expected="10000" xpath="//flow/block[2]/block[2]/block[1]/block[1]/@space-start"/>
+ <eval expected="340000" xpath="//flow/block[2]/block[2]/block[1]/block[1]/@ipd"/>
+ <eval expected="340000" xpath="//flow/block[2]/block[2]/block[1]/block[1]/@ipda"/>
+
+ <!-- block-container with start-indent -->
+ <eval expected="15000" xpath="//flow/block[2]/block[3]/@start-indent"/>
+ <eval expected="15000" xpath="//flow/block[2]/block[3]/@space-start"/>
+ <eval expected="345000" xpath="//flow/block[2]/block[3]/@ipd"/>
+ <!-- block-container's reference area -->
+ <eval expected="345000" xpath="//flow/block[2]/block[3]/block[1]/@ipd"/>
+ <!-- first red block inside the block-container -->
+ <eval expected="15000" xpath="//flow/block[2]/block[3]/block[1]/block[1]/@start-indent"/>
+ <eval expected="15000" xpath="//flow/block[2]/block[3]/block[1]/block[1]/@space-start"/>
+ <eval expected="330000" xpath="//flow/block[2]/block[3]/block[1]/block[1]/@ipd"/>
+ <!-- second red block inside the block-container -->
+ <true xpath="not(boolean(//flow/block[2]/block[3]/block[1]/block[2]/@start-indent))"/>
+ <true xpath="not(boolean(//flow/block[2]/block[3]/block[1]/block[2]/@space-indent))"/>
+ <eval expected="345000" xpath="//flow/block[2]/block[3]/block[1]/block[2]/@ipd"/>
+
+ <!-- === Same game with margin-left instead of start-indent on outer block === -->
+ <!-- === This triggered an earlier bug. === -->
+ <!-- Outer block with the start-indent property -->
+ <eval expected="10000" xpath="//flow/block[4]/@start-indent"/>
+ <eval expected="10000" xpath="//flow/block[4]/@space-start"/>
+ <eval expected="350000" xpath="//flow/block[4]/@ipd"/>
+ <eval expected="350000" xpath="//flow/block[4]/@ipda"/>
+ <!-- yellow block -->
+ <eval expected="10000" xpath="//flow/block[4]/block[1]/@start-indent"/>
+ <eval expected="10000" xpath="//flow/block[4]/block[1]/@space-start"/>
+ <eval expected="350000" xpath="//flow/block[4]/block[1]/@ipd"/>
+ <eval expected="350000" xpath="//flow/block[4]/block[1]/@ipda"/>
+ <!-- block-container -->
+ <eval expected="10000" xpath="//flow/block[4]/block[2]/@start-indent"/>
+ <eval expected="10000" xpath="//flow/block[4]/block[2]/@space-start"/>
+ <eval expected="350000" xpath="//flow/block[4]/block[2]/@ipd"/>
+ <eval expected="350000" xpath="//flow/block[4]/block[2]/@ipda"/>
+ <!-- block-container's reference area -->
+ <eval expected="350000" xpath="//flow/block[4]/block[2]/block[1]/@ipd"/>
+ <eval expected="350000" xpath="//flow/block[4]/block[2]/block[1]/@ipda"/>
+ <!-- orange block inside the block-container -->
+ <eval expected="10000" xpath="//flow/block[4]/block[2]/block[1]/block[1]/@start-indent"/>
+ <eval expected="10000" xpath="//flow/block[4]/block[2]/block[1]/block[1]/@space-start"/>
+ <eval expected="340000" xpath="//flow/block[4]/block[2]/block[1]/block[1]/@ipd"/>
+ <eval expected="340000" xpath="//flow/block[4]/block[2]/block[1]/block[1]/@ipda"/>
+
+ <!-- block-container with start-indent -->
+ <eval expected="15000" xpath="//flow/block[4]/block[3]/@start-indent"/>
+ <eval expected="15000" xpath="//flow/block[4]/block[3]/@space-start"/>
+ <eval expected="345000" xpath="//flow/block[4]/block[3]/@ipd"/>
+ <!-- block-container's reference area -->
+ <eval expected="345000" xpath="//flow/block[4]/block[3]/block[1]/@ipd"/>
+ <!-- first red block inside the block-container -->
+ <eval expected="15000" xpath="//flow/block[4]/block[3]/block[1]/block[1]/@start-indent"/>
+ <eval expected="15000" xpath="//flow/block[4]/block[3]/block[1]/block[1]/@space-start"/>
+ <eval expected="330000" xpath="//flow/block[4]/block[3]/block[1]/block[1]/@ipd"/>
+ <!-- second red block inside the block-container -->
+ <true xpath="not(boolean(//flow/block[4]/block[3]/block[1]/block[2]/@start-indent))"/>
+ <true xpath="not(boolean(//flow/block[4]/block[3]/block[1]/block[2]/@space-indent))"/>
+ <eval expected="345000" xpath="//flow/block[4]/block[3]/block[1]/block[2]/@ipd"/>
</checks>
</testcase>
---------------------------------------------------------------------
To unsubscribe, e-mail: fop-commits-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-commits-help@xmlgraphics.apache.org