diff options
author | Manuel Mall <manuel@apache.org> | 2005-11-14 05:05:35 +0000 |
---|---|---|
committer | Manuel Mall <manuel@apache.org> | 2005-11-14 05:05:35 +0000 |
commit | 862f28b0608e4c669b19c0730b9f730cfdb69076 (patch) | |
tree | d7eaf88fce8870c085e9faab648435b138064ade | |
parent | 35f6e9d8d347d74de70a37a9ca5472275461c306 (diff) | |
download | xmlgraphics-fop-862f28b0608e4c669b19c0730b9f730cfdb69076.tar.gz xmlgraphics-fop-862f28b0608e4c669b19c0730b9f730cfdb69076.zip |
Correct a few more problems related to leaders: text-align was not handled correctly, use-content was drawing incorrect borders
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@344037 13f79535-47bb-0310-9956-ffa450edef68
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> |