aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/java/org/apache/fop/area/inline/FilledArea.java17
-rwxr-xr-xsrc/java/org/apache/fop/layoutmgr/inline/InlineLayoutManager.java56
-rw-r--r--src/java/org/apache/fop/layoutmgr/inline/LeaderLayoutManager.java44
-rw-r--r--test/layoutengine/disabled-testcases.txt1
-rwxr-xr-xtest/layoutengine/standard-testcases/leader_border_padding.xml44
-rw-r--r--test/layoutengine/standard-testcases/leader_leader-pattern_use-content.xml14
-rwxr-xr-xtest/layoutengine/standard-testcases/leader_leader-pattern_use-content_bug.xml57
-rwxr-xr-xtest/layoutengine/standard-testcases/leader_text-align.xml158
8 files changed, 343 insertions, 48 deletions
diff --git a/src/java/org/apache/fop/area/inline/FilledArea.java b/src/java/org/apache/fop/area/inline/FilledArea.java
index 9c3bcf4ca..214e4110a 100644
--- a/src/java/org/apache/fop/area/inline/FilledArea.java
+++ b/src/java/org/apache/fop/area/inline/FilledArea.java
@@ -21,6 +21,7 @@ package org.apache.fop.area.inline;
import java.util.List;
import java.util.ListIterator;
import java.util.ArrayList;
+import java.util.Iterator;
/**
* Filled area.
@@ -84,7 +85,21 @@ public class FilledArea extends InlineParent {
}
/**
- * Get the child areas for this filed area.
+ * @see org.apache.fop.area.Area#getBPD
+ */
+ public int getBPD() {
+ int bpd = 0;
+ for (Iterator childAreaIt = getChildAreas().iterator(); childAreaIt.hasNext();) {
+ InlineArea area = (InlineArea)childAreaIt.next();
+ if (bpd < area.getBPD()) {
+ bpd = area.getBPD();
+ }
+ }
+ return bpd;
+ }
+
+ /**
+ * Get the child areas for this filled area.
* This copies the references of the inline areas so that
* it fills the total width of the area a whole number of times
* for the unit width.
diff --git a/src/java/org/apache/fop/layoutmgr/inline/InlineLayoutManager.java b/src/java/org/apache/fop/layoutmgr/inline/InlineLayoutManager.java
index ea1eb11a0..c24245f79 100755
--- a/src/java/org/apache/fop/layoutmgr/inline/InlineLayoutManager.java
+++ b/src/java/org/apache/fop/layoutmgr/inline/InlineLayoutManager.java
@@ -98,18 +98,13 @@ public class InlineLayoutManager extends InlineStackingLayoutManager {
/** @see LayoutManager#initialize */
public void initialize() {
- inlineProps = fobj.getCommonMarginInline();
- borderProps = fobj.getCommonBorderPaddingBackground();
-
- int padding = borderProps.getPadding(CommonBorderPaddingBackground.BEFORE, false, this);
- padding += borderProps.getBorderWidth(CommonBorderPaddingBackground.BEFORE,
- false);
- padding += borderProps.getPadding(CommonBorderPaddingBackground.AFTER, false, this);
- padding += borderProps.getBorderWidth(CommonBorderPaddingBackground.AFTER, false);
- extraBPD = new MinOptMax(padding);
+ int padding = 0;
font = fobj.getCommonFont().getFontState(fobj.getFOEventHandler().getFontInfo(), this);
lineHeight = fobj.getLineHeight();
+
if (fobj instanceof Inline) {
+ inlineProps = fobj.getCommonMarginInline();
+ borderProps = fobj.getCommonBorderPaddingBackground();
alignmentAdjust = ((Inline)fobj).getAlignmentAdjust();
alignmentBaseline = ((Inline)fobj).getAlignmentBaseline();
baselineShift = ((Inline)fobj).getBaselineShift();
@@ -120,42 +115,57 @@ public class InlineLayoutManager extends InlineStackingLayoutManager {
baselineShift = ((Leader)fobj).getBaselineShift();
dominantBaseline = ((Leader)fobj).getDominantBaseline();
}
+ if (borderProps != null) {
+ padding = borderProps.getPadding(CommonBorderPaddingBackground.BEFORE, false, this);
+ padding += borderProps.getBorderWidth(CommonBorderPaddingBackground.BEFORE,
+ false);
+ padding += borderProps.getPadding(CommonBorderPaddingBackground.AFTER, false, this);
+ padding += borderProps.getBorderWidth(CommonBorderPaddingBackground.AFTER, false);
+ }
+ extraBPD = new MinOptMax(padding);
}
/** @see InlineStackingLayoutManager#getExtraIPD(boolean, boolean) */
protected MinOptMax getExtraIPD(boolean isNotFirst, boolean isNotLast) {
- int borderAndPadding
- = borderProps.getPadding(CommonBorderPaddingBackground.START, isNotFirst, this);
- borderAndPadding
- += borderProps.getBorderWidth(CommonBorderPaddingBackground.START, isNotFirst);
- borderAndPadding
- += borderProps.getPadding(CommonBorderPaddingBackground.END, isNotLast, this);
- borderAndPadding
- += borderProps.getBorderWidth(CommonBorderPaddingBackground.END, isNotLast);
+ int borderAndPadding = 0;
+ if (borderProps != null) {
+ borderAndPadding
+ = borderProps.getPadding(CommonBorderPaddingBackground.START, isNotFirst, this);
+ borderAndPadding
+ += borderProps.getBorderWidth(CommonBorderPaddingBackground.START, isNotFirst);
+ borderAndPadding
+ += borderProps.getPadding(CommonBorderPaddingBackground.END, isNotLast, this);
+ borderAndPadding
+ += borderProps.getBorderWidth(CommonBorderPaddingBackground.END, isNotLast);
+ }
return new MinOptMax(borderAndPadding);
}
/** @see InlineStackingLayoutManager#hasLeadingFence(boolean) */
protected boolean hasLeadingFence(boolean isNotFirst) {
- return borderProps.getPadding(CommonBorderPaddingBackground.START, isNotFirst, this) > 0
- || borderProps.getBorderWidth(CommonBorderPaddingBackground.START, isNotFirst) > 0;
+ return borderProps != null
+ && (borderProps.getPadding(CommonBorderPaddingBackground.START, isNotFirst, this) > 0
+ || borderProps.getBorderWidth(CommonBorderPaddingBackground.START, isNotFirst) > 0
+ );
}
/** @see InlineStackingLayoutManager#hasTrailingFence(boolean) */
protected boolean hasTrailingFence(boolean isNotLast) {
- return borderProps.getPadding(CommonBorderPaddingBackground.END, isNotLast, this) > 0
- || borderProps.getBorderWidth(CommonBorderPaddingBackground.END, isNotLast) > 0;
+ return borderProps != null
+ && (borderProps.getPadding(CommonBorderPaddingBackground.END, isNotLast, this) > 0
+ || borderProps.getBorderWidth(CommonBorderPaddingBackground.END, isNotLast) > 0
+ );
}
/** @see InlineStackingLayoutManager#getSpaceStart */
protected SpaceProperty getSpaceStart() {
- return inlineProps.spaceStart;
+ return inlineProps != null ? inlineProps.spaceStart : null;
}
/** @see InlineStackingLayoutManager#getSpaceEnd */
protected SpaceProperty getSpaceEnd() {
- return inlineProps.spaceEnd;
+ return inlineProps != null ? inlineProps.spaceEnd : null;
}
/** @see org.apache.fop.layoutmgr.inline.InlineLayoutManager#createArea(boolean) */
diff --git a/src/java/org/apache/fop/layoutmgr/inline/LeaderLayoutManager.java b/src/java/org/apache/fop/layoutmgr/inline/LeaderLayoutManager.java
index ede040d21..9731cc960 100644
--- a/src/java/org/apache/fop/layoutmgr/inline/LeaderLayoutManager.java
+++ b/src/java/org/apache/fop/layoutmgr/inline/LeaderLayoutManager.java
@@ -201,6 +201,14 @@ public class LeaderLayoutManager extends LeafNodeLayoutManager {
widthAdjustArea(curArea, context);
+ if (commonBorderPaddingBackground != null) {
+ // Add border and padding to area
+ TraitSetter.setBorderPaddingTraits(curArea,
+ commonBorderPaddingBackground,
+ false, false, this);
+ TraitSetter.addBackground(curArea, commonBorderPaddingBackground, this);
+ }
+
// add content areas
KnuthPossPosIter contentIter = new KnuthPossPosIter(contentList, 0, contentList.size());
clm.addAreas(contentIter, context);
@@ -251,11 +259,19 @@ public class LeaderLayoutManager extends LeafNodeLayoutManager {
new LeafPosition(this, -1), true));
seq.add(new KnuthPenalty(0, KnuthElement.INFINITE, false,
new LeafPosition(this, -1), true));
- seq.add
- (new KnuthGlue(areaInfo.ipdArea.opt,
- areaInfo.ipdArea.max - areaInfo.ipdArea.opt,
- areaInfo.ipdArea.opt - areaInfo.ipdArea.min,
- new LeafPosition(this, 0), false));
+ if (alignment == EN_JUSTIFY || alignment == 0) {
+ seq.add
+ (new KnuthGlue(areaInfo.ipdArea.opt,
+ areaInfo.ipdArea.max - areaInfo.ipdArea.opt,
+ areaInfo.ipdArea.opt - areaInfo.ipdArea.min,
+ new LeafPosition(this, 0), false));
+ } else {
+ seq.add
+ (new KnuthGlue(areaInfo.ipdArea.opt,
+ 0,
+ 0,
+ new LeafPosition(this, 0), false));
+ }
seq.add(new KnuthInlineBox(0, alignmentContext,
new LeafPosition(this, -1), true));
@@ -294,11 +310,19 @@ public class LeaderLayoutManager extends LeafNodeLayoutManager {
new LeafPosition(this, -1), true));
returnList.add(new KnuthPenalty(0, KnuthElement.INFINITE, false,
new LeafPosition(this, -1), true));
- returnList.add
- (new KnuthGlue(areaInfo.ipdArea.opt,
- areaInfo.ipdArea.max - areaInfo.ipdArea.opt,
- areaInfo.ipdArea.opt - areaInfo.ipdArea.min,
- new LeafPosition(this, 0), false));
+ if (alignment == EN_JUSTIFY || alignment == 0) {
+ returnList.add
+ (new KnuthGlue(areaInfo.ipdArea.opt,
+ areaInfo.ipdArea.max - areaInfo.ipdArea.opt,
+ areaInfo.ipdArea.opt - areaInfo.ipdArea.min,
+ new LeafPosition(this, 0), false));
+ } else {
+ returnList.add
+ (new KnuthGlue(areaInfo.ipdArea.opt,
+ 0,
+ 0,
+ new LeafPosition(this, 0), false));
+ }
returnList.add(new KnuthInlineBox(0, areaInfo.alignmentContext,
new LeafPosition(this, -1), true));
diff --git a/test/layoutengine/disabled-testcases.txt b/test/layoutengine/disabled-testcases.txt
index 86ba90031..7fc929258 100644
--- a/test/layoutengine/disabled-testcases.txt
+++ b/test/layoutengine/disabled-testcases.txt
@@ -19,6 +19,7 @@ inline_letter-spacing.xml
inline_word-spacing.xml
inline_word-spacing_text-align_justify.xml
leader-alignment.xml
+leader_leader-pattern_use-content_bug.xml
list-block_keep-with-previous.xml
list-item_block_keep-with-previous.xml
page-breaking_4.xml
diff --git a/test/layoutengine/standard-testcases/leader_border_padding.xml b/test/layoutengine/standard-testcases/leader_border_padding.xml
index aa89bcbfa..a51514635 100755
--- a/test/layoutengine/standard-testcases/leader_border_padding.xml
+++ b/test/layoutengine/standard-testcases/leader_border_padding.xml
@@ -47,10 +47,8 @@
space solid 1pt red border
</fo:block>
<fo:block>
- <!-- use content currently causes a ClassCastException
<fo:leader leader-length="36pt" leader-pattern="use-content" border="solid 1pt red">x</fo:leader>
use-content x solid 1pt red border
- -->
</fo:block>
<fo:block margin="10pt 0pt 10pt 0pt">
<fo:leader leader-length="36pt" leader-pattern="dots" border="solid 5pt red" padding="5pt"/>
@@ -69,10 +67,8 @@
space solid 5pt red border 5pt padding
</fo:block>
<fo:block margin="10pt 0pt 10pt 0pt">
- <!-- use content currently causes a ClassCastException
<fo:leader leader-length="36pt" leader-pattern="use-content" border="solid 5pt red" padding="5pt">x</fo:leader>
use-content x solid 5pt red border 5pt padding
- -->
</fo:block>
<fo:block margin="2pt 0pt 2pt 0pt">
<fo:leader leader-length="36pt" leader-pattern="dots" border-style="solid" border-width="1pt 2pt 3pt 4pt" border-color="red" padding="1pt 2pt 3pt 4pt"/>
@@ -91,10 +87,8 @@
space uneven border and padding
</fo:block>
<fo:block margin="2pt 0pt 2pt 0pt">
- <!-- use content currently causes a ClassCastException
<fo:leader leader-length="36pt" leader-pattern="use-content" border-style="solid" border-width="1pt 2pt 3pt 4pt" border-color="red" padding="1pt 2pt 3pt 4pt">x</fo:leader>
use-content x uneven border and padding
- -->
</fo:block>
</fo:flow>
</fo:page-sequence>
@@ -141,6 +135,16 @@
<eval expected="(solid,#ff0000,1000)" xpath="//flow/block[4]/lineArea/space/@border-end"/>
<eval expected="(solid,#ff0000,1000)" xpath="//flow/block[4]/lineArea/space/@border-start"/>
+ <eval expected="11100" xpath="//flow/block[5]/lineArea/@bpd"/>
+ <eval expected="360000" xpath="//flow/block[5]/lineArea/@ipd"/>
+ <eval expected="34000" xpath="//flow/block[5]/lineArea/inlineparent/@ipd"/>
+ <eval expected="36000" xpath="//flow/block[5]/lineArea/inlineparent/@ipda"/>
+ <eval expected="0" xpath="//flow/block[5]/lineArea/inlineparent/@offset"/>
+ <eval expected="(solid,#ff0000,1000)" xpath="//flow/block[5]/lineArea/inlineparent/@border-after"/>
+ <eval expected="(solid,#ff0000,1000)" xpath="//flow/block[5]/lineArea/inlineparent/@border-before"/>
+ <eval expected="(solid,#ff0000,1000)" xpath="//flow/block[5]/lineArea/inlineparent/@border-end"/>
+ <eval expected="(solid,#ff0000,1000)" xpath="//flow/block[5]/lineArea/inlineparent/@border-start"/>
+
<eval expected="11100" xpath="//flow/block[6]/lineArea/@bpd"/>
<eval expected="360000" xpath="//flow/block[6]/lineArea/@ipd"/>
<eval expected="16000" xpath="//flow/block[6]/lineArea/inlineparent/@ipd"/>
@@ -197,6 +201,20 @@
<eval expected="5000" xpath="//flow/block[9]/lineArea/space/@padding-end"/>
<eval expected="5000" xpath="//flow/block[9]/lineArea/space/@padding-start"/>
+ <eval expected="11100" xpath="//flow/block[10]/lineArea/@bpd"/>
+ <eval expected="360000" xpath="//flow/block[10]/lineArea/@ipd"/>
+ <eval expected="16000" xpath="//flow/block[10]/lineArea/inlineparent/@ipd"/>
+ <eval expected="36000" xpath="//flow/block[10]/lineArea/inlineparent/@ipda"/>
+ <eval expected="0" xpath="//flow/block[10]/lineArea/inlineparent/@offset"/>
+ <eval expected="(solid,#ff0000,5000)" xpath="//flow/block[10]/lineArea/inlineparent/@border-after"/>
+ <eval expected="(solid,#ff0000,5000)" xpath="//flow/block[10]/lineArea/inlineparent/@border-before"/>
+ <eval expected="(solid,#ff0000,5000)" xpath="//flow/block[10]/lineArea/inlineparent/@border-end"/>
+ <eval expected="(solid,#ff0000,5000)" xpath="//flow/block[10]/lineArea/inlineparent/@border-start"/>
+ <eval expected="5000" xpath="//flow/block[10]/lineArea/inlineparent/@padding-after"/>
+ <eval expected="5000" xpath="//flow/block[10]/lineArea/inlineparent/@padding-before"/>
+ <eval expected="5000" xpath="//flow/block[10]/lineArea/inlineparent/@padding-end"/>
+ <eval expected="5000" xpath="//flow/block[10]/lineArea/inlineparent/@padding-start"/>
+
<eval expected="11100" xpath="//flow/block[11]/lineArea/@bpd"/>
<eval expected="360000" xpath="//flow/block[11]/lineArea/@ipd"/>
<eval expected="24000" xpath="//flow/block[11]/lineArea/inlineparent/@ipd"/>
@@ -252,5 +270,19 @@
<eval expected="1000" xpath="//flow/block[14]/lineArea/space/@padding-before"/>
<eval expected="2000" xpath="//flow/block[14]/lineArea/space/@padding-end"/>
<eval expected="4000" xpath="//flow/block[14]/lineArea/space/@padding-start"/>
+
+ <eval expected="11100" xpath="//flow/block[15]/lineArea/@bpd"/>
+ <eval expected="360000" xpath="//flow/block[15]/lineArea/@ipd"/>
+ <eval expected="24000" xpath="//flow/block[15]/lineArea/inlineparent/@ipd"/>
+ <eval expected="36000" xpath="//flow/block[15]/lineArea/inlineparent/@ipda"/>
+ <eval expected="0" xpath="//flow/block[15]/lineArea/inlineparent/@offset"/>
+ <eval expected="(solid,#ff0000,3000)" xpath="//flow/block[15]/lineArea/inlineparent/@border-after"/>
+ <eval expected="(solid,#ff0000,1000)" xpath="//flow/block[15]/lineArea/inlineparent/@border-before"/>
+ <eval expected="(solid,#ff0000,2000)" xpath="//flow/block[15]/lineArea/inlineparent/@border-end"/>
+ <eval expected="(solid,#ff0000,4000)" xpath="//flow/block[15]/lineArea/inlineparent/@border-start"/>
+ <eval expected="3000" xpath="//flow/block[15]/lineArea/inlineparent/@padding-after"/>
+ <eval expected="1000" xpath="//flow/block[15]/lineArea/inlineparent/@padding-before"/>
+ <eval expected="2000" xpath="//flow/block[15]/lineArea/inlineparent/@padding-end"/>
+ <eval expected="4000" xpath="//flow/block[15]/lineArea/inlineparent/@padding-start"/>
</checks>
</testcase>
diff --git a/test/layoutengine/standard-testcases/leader_leader-pattern_use-content.xml b/test/layoutengine/standard-testcases/leader_leader-pattern_use-content.xml
index a27218736..9b8306bbd 100644
--- a/test/layoutengine/standard-testcases/leader_leader-pattern_use-content.xml
+++ b/test/layoutengine/standard-testcases/leader_leader-pattern_use-content.xml
@@ -60,15 +60,13 @@
Content is svg 10 x 10
</fo:block>
<fo:block>
- <fo:leader leader-pattern="use-content">
- <fo:instream-foreign-object>
+ <fo:leader leader-pattern="use-content"><fo:instream-foreign-object>
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="10">
<rect x="0" y="0" width="10" height="5" style="fill:red"/>
- <rect x="5" y="5" width="10" height="5" style="fill:black"/>
+ <rect x="10" y="5" width="10" height="5" style="fill:black"/>
</svg>
- </fo:instream-foreign-object>
- </fo:leader>
- Content is svg 20 x 10 which is wider than the default leader-length
+ </fo:instream-foreign-object></fo:leader>
+ Content is svg 20 x 10 which is wider than the leader-length
</fo:block>
</fo:flow>
</fo:page-sequence>
@@ -167,9 +165,9 @@
<eval expected="0 0 0 0" xpath="//flow/block[6]/lineArea/inlineparent/inlineparent[3]/viewport/@bap"/>
<eval expected="11100" xpath="//flow/block[7]/lineArea/@bpd"/>
- <eval expected="23336" xpath="//flow/block[7]/lineArea/inlineparent/@ipd"/>
+ <eval expected="20000" xpath="//flow/block[7]/lineArea/inlineparent/@ipd"/>
<eval expected="0" xpath="//flow/block[7]/lineArea/inlineparent/@offset"/>
- <eval expected="23336" xpath="//flow/block[7]/lineArea/inlineparent/inlineparent[1]/@ipd"/>
+ <eval expected="20000" xpath="//flow/block[7]/lineArea/inlineparent/inlineparent[1]/@ipd"/>
<eval expected="0" xpath="//flow/block[7]/lineArea/inlineparent/inlineparent[1]/@offset"/>
<eval expected="20000" xpath="//flow/block[7]/lineArea/inlineparent/inlineparent[1]/viewport/@ipd"/>
<eval expected="-1384" xpath="//flow/block[7]/lineArea/inlineparent/inlineparent[1]/viewport/@offset"/>
diff --git a/test/layoutengine/standard-testcases/leader_leader-pattern_use-content_bug.xml b/test/layoutengine/standard-testcases/leader_leader-pattern_use-content_bug.xml
new file mode 100755
index 000000000..9a7766672
--- /dev/null
+++ b/test/layoutengine/standard-testcases/leader_leader-pattern_use-content_bug.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2005 The Apache Software Foundation
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<!-- $Id$ -->
+<testcase>
+ <info>
+ <p>
+ This test demonstrates a bug with fo:leader use-content
+ </p>
+ </info>
+ <fo>
+ <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:svg="http://www.w3.org/2000/svg">
+ <fo:layout-master-set>
+ <fo:simple-page-master master-name="normal" page-width="5in" page-height="5in">
+ <fo:region-body/>
+ </fo:simple-page-master>
+ </fo:layout-master-set>
+ <fo:page-sequence master-reference="normal" white-space-collapse="true">
+ <fo:flow flow-name="xsl-region-body">
+ <fo:block>
+ <fo:leader leader-length="36pt" leader-pattern="use-content" font-size="24pt">x</fo:leader>
+ use-content x font-size="24pt"
+ </fo:block>
+ <fo:block margin="10pt 0pt 10pt 0pt">
+ <fo:leader leader-length="36pt" leader-pattern="use-content" border="solid 5pt red" padding="5pt">x</fo:leader>
+ use-content x solid 5pt red border 5pt padding
+ </fo:block>
+ </fo:flow>
+ </fo:page-sequence>
+ </fo:root>
+ </fo>
+ <checks>
+ <eval expected="22200" xpath="//flow/block[1]/lineArea/@bpd"/>
+ <eval expected="360000" xpath="//flow/block[1]/lineArea/@ipd"/>
+ <eval expected="16000" xpath="//flow/block[1]/lineArea/inlineparent/@ipd"/>
+ <eval expected="8616" xpath="//flow/block[1]/lineArea/text/@offset"/>
+
+ <eval expected="11100" xpath="//flow/block[2]/lineArea/@bpd"/>
+ <eval expected="360000" xpath="//flow/block[2]/lineArea/@ipd"/>
+ <eval expected="11100" xpath="//flow/block[2]/lineArea/inlineparent/@bpd"/>
+ <eval expected="16000" xpath="//flow/block[2]/lineArea/inlineparent/@ipd"/>
+ <eval expected="36000" xpath="//flow/block[2]/lineArea/inlineparent/@ipda"/>
+ </checks>
+</testcase>
diff --git a/test/layoutengine/standard-testcases/leader_text-align.xml b/test/layoutengine/standard-testcases/leader_text-align.xml
new file mode 100755
index 000000000..086090f28
--- /dev/null
+++ b/test/layoutengine/standard-testcases/leader_text-align.xml
@@ -0,0 +1,158 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2005 The Apache Software Foundation
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<!-- $Id$ -->
+<testcase>
+ <info>
+ <p>
+ This test checks fo:leader with different text-align
+ </p>
+ </info>
+ <fo>
+ <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:svg="http://www.w3.org/2000/svg">
+ <fo:layout-master-set>
+ <fo:simple-page-master master-name="normal" page-width="5in" page-height="5in">
+ <fo:region-body/>
+ </fo:simple-page-master>
+ </fo:layout-master-set>
+ <fo:page-sequence master-reference="normal" white-space-collapse="true">
+ <fo:flow flow-name="xsl-region-body">
+ <fo:block>
+ <fo:leader leader-pattern="dots"/>
+ dots
+ </fo:block>
+ <fo:block>
+ <fo:leader leader-pattern="rule" rule-style="double"/>
+ rule double
+ </fo:block>
+ <fo:block>
+ <fo:leader leader-pattern="space"/>
+ space
+ </fo:block>
+ <fo:block>
+ <fo:leader leader-pattern="use-content">x</fo:leader>
+ use-content x
+ </fo:block>
+ <fo:block text-align-last="justify">
+ <fo:leader leader-pattern="dots"/>
+ dots text-align-last="justify"
+ </fo:block>
+ <fo:block text-align-last="justify">
+ <fo:leader leader-pattern="rule" rule-style="double"/>
+ rule double text-align-last="justify"
+ </fo:block>
+ <fo:block text-align-last="justify">
+ <fo:leader leader-pattern="space"/>
+ space text-align-last="justify"
+ </fo:block>
+ <fo:block text-align-last="justify">
+ <fo:leader leader-pattern="use-content">x</fo:leader>
+ use-content x text-align-last="justify"
+ </fo:block>
+ <fo:block text-align-last="end">
+ <fo:leader leader-pattern="dots"/>
+ dots text-align-last="end"
+ </fo:block>
+ <fo:block text-align-last="end">
+ <fo:leader leader-pattern="rule" rule-style="double"/>
+ rule double text-align-last="end"
+ </fo:block>
+ <fo:block text-align-last="end">
+ <fo:leader leader-pattern="space"/>
+ space text-align-last="end"
+ </fo:block>
+ <fo:block text-align-last="end">
+ <fo:leader leader-pattern="use-content">x</fo:leader>
+ use-content x text-align-last="end"
+ </fo:block>
+ <fo:block text-align-last="center">
+ <fo:leader leader-pattern="dots"/>
+ dots text-align-last="center"
+ </fo:block>
+ <fo:block text-align-last="center">
+ <fo:leader leader-pattern="rule" rule-style="double"/>
+ rule double text-align-last="center"
+ </fo:block>
+ <fo:block text-align-last="center">
+ <fo:leader leader-pattern="space"/>
+ space text-align-last="center"
+ </fo:block>
+ <fo:block text-align-last="center">
+ <fo:leader leader-pattern="use-content">x</fo:leader>
+ use-content x text-align-last="center"
+ </fo:block>
+ </fo:flow>
+ </fo:page-sequence>
+ </fo:root>
+ </fo>
+ <checks>
+ <eval expected="360000" xpath="//flow/block[1]/lineArea/@ipd"/>
+ <eval expected="12000" xpath="//flow/block[1]/lineArea/inlineparent/@ipd"/>
+
+ <eval expected="360000" xpath="//flow/block[2]/lineArea/@ipd"/>
+ <eval expected="12000" xpath="//flow/block[2]/lineArea/leader/@ipd"/>
+
+ <eval expected="360000" xpath="//flow/block[3]/lineArea/@ipd"/>
+ <eval expected="12000" xpath="//flow/block[3]/lineArea/space/@ipd"/>
+
+ <eval expected="360000" xpath="//flow/block[4]/lineArea/@ipd"/>
+ <eval expected="12000" xpath="//flow/block[4]/lineArea/inlineparent/@ipd"/>
+
+ <eval expected="360000" xpath="//flow/block[5]/lineArea/@ipd"/>
+ <eval expected="215456" xpath="//flow/block[5]/lineArea/inlineparent/@ipd"/>
+
+ <eval expected="360000" xpath="//flow/block[6]/lineArea/@ipd"/>
+ <eval expected="178155" xpath="//flow/block[6]/lineArea/leader/@ipd"/>
+
+ <eval expected="360000" xpath="//flow/block[7]/lineArea/@ipd"/>
+ <eval expected="206165" xpath="//flow/block[7]/lineArea/space/@ipd"/>
+
+ <eval expected="360000" xpath="//flow/block[8]/lineArea/@ipd"/>
+ <eval expected="161589" xpath="//flow/block[8]/lineArea/inlineparent/@ipd"/>
+
+ <eval expected="360000" xpath="//flow/block[9]/lineArea/@ipd"/>
+ <eval expected="215088" xpath="//flow/block[9]/lineArea/@start-indent"/>
+ <eval expected="12000" xpath="//flow/block[9]/lineArea/inlineparent/@ipd"/>
+
+ <eval expected="360000" xpath="//flow/block[10]/lineArea/@ipd"/>
+ <eval expected="178404" xpath="//flow/block[10]/lineArea/@start-indent"/>
+ <eval expected="12000" xpath="//flow/block[10]/lineArea/leader/@ipd"/>
+
+ <eval expected="360000" xpath="//flow/block[11]/lineArea/@ipd"/>
+ <eval expected="205752" xpath="//flow/block[11]/lineArea/@start-indent"/>
+ <eval expected="12000" xpath="//flow/block[11]/lineArea/space/@ipd"/>
+
+ <eval expected="360000" xpath="//flow/block[12]/lineArea/@ipd"/>
+ <eval expected="162396" xpath="//flow/block[12]/lineArea/@start-indent"/>
+ <eval expected="12000" xpath="//flow/block[12]/lineArea/inlineparent/@ipd"/>
+
+ <eval expected="360000" xpath="//flow/block[13]/lineArea/@ipd"/>
+ <eval expected="100878" xpath="//flow/block[13]/lineArea/@start-indent"/>
+ <eval expected="12000" xpath="//flow/block[13]/lineArea/inlineparent/@ipd"/>
+
+ <eval expected="360000" xpath="//flow/block[14]/lineArea/@ipd"/>
+ <eval expected="82536" xpath="//flow/block[14]/lineArea/@start-indent"/>
+ <eval expected="12000" xpath="//flow/block[14]/lineArea/leader/@ipd"/>
+
+ <eval expected="360000" xpath="//flow/block[15]/lineArea/@ipd"/>
+ <eval expected="96210" xpath="//flow/block[15]/lineArea/@start-indent"/>
+ <eval expected="12000" xpath="//flow/block[15]/lineArea/space/@ipd"/>
+
+ <eval expected="360000" xpath="//flow/block[16]/lineArea/@ipd"/>
+ <eval expected="74532" xpath="//flow/block[16]/lineArea/@start-indent"/>
+ <eval expected="12000" xpath="//flow/block[16]/lineArea/inlineparent/@ipd"/>
+ </checks>
+</testcase>