Browse Source

Inline block parents were not correctly positioned when border/padding got involved - matched their positioning logic with the usual inlines

git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@321108 13f79535-47bb-0310-9956-ffa450edef68
tags/fop-0_90-alpha1
Manuel Mall 18 years ago
parent
commit
7ce41696f3

+ 7
- 0
src/java/org/apache/fop/layoutmgr/inline/InlineLayoutManager.java View File

@@ -447,6 +447,13 @@ public class InlineLayoutManager extends InlineStackingLayoutManager {
parent.setBPD(alignmentContext.getHeight());
if (parent instanceof InlineParent) {
parent.setOffset(alignmentContext.getOffset());
} else if (parent instanceof InlineBlockParent) {
// All inline elements are positioned by the renderers relative to
// the before edge of their content rectangle
if (borderProps != null) {
parent.setOffset(borderProps.getPaddingBefore(false, this)
+ borderProps.getBorderBeforeWidth(false));
}
}
setCurrentArea(parent);

+ 1
- 0
src/java/org/apache/fop/render/AbstractRenderer.java View File

@@ -662,6 +662,7 @@ public abstract class AbstractRenderer
currentIPPosition += ibp.getBorderAndPaddingWidthStart();
// For inline content the BP position is updated by the enclosing line area
int saveBP = currentBPPosition;
currentBPPosition += ibp.getOffset();
renderBlock(ibp.getChildArea());
currentBPPosition = saveBP;
}

+ 1
- 0
src/java/org/apache/fop/render/xml/XMLRenderer.java View File

@@ -638,6 +638,7 @@ public class XMLRenderer extends PrintRenderer {
atts.clear();
addAreaAttributes(ibp);
addTraitAttributes(ibp);
addAttribute("offset", ibp.getOffset());
startElement("inlineblockparent", atts);
super.renderInlineBlockParent(ibp);
endElement("inlineblockparent");

+ 3
- 0
test/layoutengine/testcases/inline_border_padding_block_nested_1.xml View File

@@ -64,6 +64,7 @@
<checks>
<eval expected="347000" xpath="//flow/block[2]/lineArea[2]/inlineblockparent/@ipd"/>
<eval expected="350000" xpath="//flow/block[2]/lineArea[2]/inlineblockparent/@ipda"/>
<eval expected="3000" xpath="//flow/block[2]/lineArea[2]/inlineblockparent/@offset"/>
<eval expected="(solid,#ff0000,1000)" xpath="//flow/block[2]/lineArea[2]/inlineblockparent/@border-after"/>
<eval expected="(solid,#ff0000,1000)" xpath="//flow/block[2]/lineArea[2]/inlineblockparent/@border-before"/>
<eval expected="(solid,#ff0000,1000)" xpath="//flow/block[2]/lineArea[2]/inlineblockparent/@border-start"/>
@@ -89,6 +90,7 @@
<eval expected="2000" xpath="//flow/block[5]/lineArea[1]/inlineparent/@padding-start"/>
<eval expected="347000" xpath="//flow/block[5]/lineArea[2]/inlineblockparent/@ipd"/>
<eval expected="350000" xpath="//flow/block[5]/lineArea[2]/inlineblockparent/@ipda"/>
<eval expected="3000" xpath="//flow/block[5]/lineArea[2]/inlineblockparent/@offset"/>
<eval expected="(solid,#ff0000,1000)" xpath="//flow/block[5]/lineArea[2]/inlineblockparent/@border-after"/>
<eval expected="(solid,#ff0000,1000)" xpath="//flow/block[5]/lineArea[2]/inlineblockparent/@border-before"/>
<eval expected="(solid,#ff0000,1000)" xpath="//flow/block[5]/lineArea[2]/inlineblockparent/@border-end"/>
@@ -106,6 +108,7 @@
<eval expected="2000" xpath="//flow/block[8]/lineArea[1]/inlineparent/@padding-start"/>
<eval expected="350000" xpath="//flow/block[8]/lineArea[2]/inlineblockparent/@ipd"/>
<eval expected="350000" xpath="//flow/block[8]/lineArea[2]/inlineblockparent/@ipda"/>
<eval expected="2000" xpath="//flow/block[8]/lineArea[2]/inlineblockparent/@offset"/>
<eval expected="(solid,#ff0000,1000)" xpath="//flow/block[8]/lineArea[2]/inlineblockparent/@border-after"/>
<eval expected="(solid,#ff0000,1000)" xpath="//flow/block[8]/lineArea[2]/inlineblockparent/@border-before"/>
<eval expected="1000" xpath="//flow/block[8]/lineArea[2]/inlineblockparent/@padding-after"/>

+ 3
- 0
test/layoutengine/testcases/inline_border_padding_block_nested_2.xml View File

@@ -90,6 +90,7 @@
<checks>
<eval expected="344000" xpath="//flow/block[2]/lineArea[2]/inlineblockparent/@ipd"/>
<eval expected="350000" xpath="//flow/block[2]/lineArea[2]/inlineblockparent/@ipda"/>
<eval expected="3000" xpath="//flow/block[2]/lineArea[2]/inlineblockparent/@offset"/>
<eval expected="(solid,#ff0000,1000)" xpath="//flow/block[2]/lineArea[2]/inlineblockparent/@border-after"/>
<eval expected="(solid,#ff0000,1000)" xpath="//flow/block[2]/lineArea[2]/inlineblockparent/@border-before"/>
<eval expected="(solid,#ff0000,1000)" xpath="//flow/block[2]/lineArea[2]/inlineblockparent/@border-start"/>
@@ -121,6 +122,7 @@
<eval expected="2000" xpath="//flow/block[5]/lineArea[1]/inlineparent/@padding-end"/>
<eval expected="344000" xpath="//flow/block[5]/lineArea[2]/inlineblockparent/@ipd"/>
<eval expected="350000" xpath="//flow/block[5]/lineArea[2]/inlineblockparent/@ipda"/>
<eval expected="3000" xpath="//flow/block[5]/lineArea[2]/inlineblockparent/@offset"/>
<eval expected="(solid,#ff0000,1000)" xpath="//flow/block[5]/lineArea[2]/inlineblockparent/@border-after"/>
<eval expected="(solid,#ff0000,1000)" xpath="//flow/block[5]/lineArea[2]/inlineblockparent/@border-before"/>
<eval expected="(solid,#ff0000,1000)" xpath="//flow/block[5]/lineArea[2]/inlineblockparent/@border-start"/>
@@ -142,6 +144,7 @@
<eval expected="2000" xpath="//flow/block[8]/lineArea[1]/inlineparent/@padding-end"/>
<eval expected="344000" xpath="//flow/block[8]/lineArea[2]/inlineblockparent/@ipd"/>
<eval expected="350000" xpath="//flow/block[8]/lineArea[2]/inlineblockparent/@ipda"/>
<eval expected="3000" xpath="//flow/block[8]/lineArea[2]/inlineblockparent/@offset"/>
<eval expected="(solid,#ff0000,1000)" xpath="//flow/block[8]/lineArea[2]/inlineblockparent/@border-after"/>
<eval expected="(solid,#ff0000,1000)" xpath="//flow/block[8]/lineArea[2]/inlineblockparent/@border-before"/>
<eval expected="(solid,#ff0000,1000)" xpath="//flow/block[8]/lineArea[2]/inlineblockparent/@border-start"/>

Loading…
Cancel
Save