Author: vhennebert
Date: Tue Jul 21 12:01:20 2009
New Revision: 796267

URL: http://svn.apache.org/viewvc?rev=796267&view=rev
Log:
Added fall back handling of layout managers that don't support IPD change 
(lists and tables, mainly). Their elements are simply added at the start of the 
new element list, so not taking the new IPD into account. This will lead to 
overflowing content (without notice) if there is a change from a wider page to 
a narrower one, and blank space at the right of the page in the opposite 
situation. Border- and space-before will be handled as if the element were 
starting on the new page (i.e., border will appear even if its conditionality 
has been set to "discard").
Element generation will be re-done starting from the first layout manager that 
is not enclosed by a non-restartable LM. Its space-before will be treated as if 
it were starting the page (i.e., ignored if .conditionality is not set to 
"retain").

Added:
    
xmlgraphics/fop/branches/Temp_ChangingIPDHack/test/layoutengine/standard-testcases/flow_changing-ipd_4.xml
   (with props)
Modified:
    
xmlgraphics/fop/branches/Temp_ChangingIPDHack/src/java/org/apache/fop/layoutmgr/AbstractBaseLayoutManager.java
    
xmlgraphics/fop/branches/Temp_ChangingIPDHack/src/java/org/apache/fop/layoutmgr/AbstractBreaker.java
    
xmlgraphics/fop/branches/Temp_ChangingIPDHack/src/java/org/apache/fop/layoutmgr/BlockLayoutManager.java
    
xmlgraphics/fop/branches/Temp_ChangingIPDHack/src/java/org/apache/fop/layoutmgr/FlowLayoutManager.java
    
xmlgraphics/fop/branches/Temp_ChangingIPDHack/src/java/org/apache/fop/layoutmgr/LayoutManager.java
    
xmlgraphics/fop/branches/Temp_ChangingIPDHack/src/java/org/apache/fop/layoutmgr/PageBreaker.java
    
xmlgraphics/fop/branches/Temp_ChangingIPDHack/src/java/org/apache/fop/layoutmgr/inline/LineLayoutManager.java

Modified: 
xmlgraphics/fop/branches/Temp_ChangingIPDHack/src/java/org/apache/fop/layoutmgr/AbstractBaseLayoutManager.java
URL: 
http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_ChangingIPDHack/src/java/org/apache/fop/layoutmgr/AbstractBaseLayoutManager.java?rev=796267&r1=796266&r2=796267&view=diff
==============================================================================
--- 
xmlgraphics/fop/branches/Temp_ChangingIPDHack/src/java/org/apache/fop/layoutmgr/AbstractBaseLayoutManager.java
 (original)
+++ 
xmlgraphics/fop/branches/Temp_ChangingIPDHack/src/java/org/apache/fop/layoutmgr/AbstractBaseLayoutManager.java
 Tue Jul 21 12:01:20 2009
@@ -259,4 +259,9 @@
         throw new UnsupportedOperationException("Not implemented");
     }
 
+    /** {...@inheritdoc} */
+    public boolean isRestartable() {
+        return false;
+    }
+
 }

Modified: 
xmlgraphics/fop/branches/Temp_ChangingIPDHack/src/java/org/apache/fop/layoutmgr/AbstractBreaker.java
URL: 
http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_ChangingIPDHack/src/java/org/apache/fop/layoutmgr/AbstractBreaker.java?rev=796267&r1=796266&r2=796267&view=diff
==============================================================================
--- 
xmlgraphics/fop/branches/Temp_ChangingIPDHack/src/java/org/apache/fop/layoutmgr/AbstractBreaker.java
 (original)
+++ 
xmlgraphics/fop/branches/Temp_ChangingIPDHack/src/java/org/apache/fop/layoutmgr/AbstractBreaker.java
 Tue Jul 21 12:01:20 2009
@@ -19,6 +19,7 @@
 
 package org.apache.fop.layoutmgr;
 
+import java.util.Collections;
 import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.List;
@@ -338,7 +339,8 @@
                         BreakingAlgorithm.ALL_BREAKS);
                 if (alg.ipdChanged()) {
                     KnuthNode optimalBreak = alg.getBestNodeBeforeIPDChange();
-                    KnuthElement elementAtBreak = 
alg.getElement(optimalBreak.position);
+                    int positionIndex = optimalBreak.position;
+                    KnuthElement elementAtBreak = 
alg.getElement(positionIndex);
                     Position positionAtBreak = elementAtBreak.getPosition();
                     if (!(positionAtBreak instanceof 
SpaceResolver.SpaceHandlingBreakPosition)) {
                         throw new UnsupportedOperationException(
@@ -347,6 +349,29 @@
                     /* Retrieve the original position wrapped into this space 
position */
                     positionAtBreak = positionAtBreak.getPosition();
                     LayoutManager restartAtLM = null;
+                    List firstElements = Collections.EMPTY_LIST;
+                    if (containsNonRestartableLM(positionAtBreak)) {
+                        firstElements = new LinkedList();
+                        boolean boxFound = false;
+                        Iterator iter = 
effectiveList.listIterator(++positionIndex);
+                        Position position = null;
+                        while (iter.hasNext()
+                                && (position == null || 
containsNonRestartableLM(position))) {
+                            KnuthElement element = (KnuthElement) iter.next();
+                            positionIndex++;
+                            position = element.getPosition();
+                            if (element.isBox()) {
+                                boxFound = true;
+                                firstElements.add(element);
+                            } else if (boxFound) {
+                                firstElements.add(element);
+                            }
+                        }
+                        if (position instanceof 
SpaceResolver.SpaceHandlingBreakPosition) {
+                            /* Retrieve the original position wrapped into 
this space position */
+                            positionAtBreak = position.getPosition();
+                        }
+                    }
                     if (positionAtBreak.getIndex() == -1) {
                         /*
                          * This is an indication that we are between two blocks
@@ -354,7 +379,7 @@
                          * paragraph.
                          */
                         Position position;
-                        Iterator iter = 
alg.par.listIterator(optimalBreak.position + 1);
+                        Iterator iter = 
effectiveList.listIterator(positionIndex + 1);
                         do {
                             KnuthElement nextElement = (KnuthElement) 
iter.next();
                             position = nextElement.getPosition();
@@ -375,7 +400,7 @@
                     blockLists.clear();
                     blockListIndex = -1;
                     nextSequenceStartsOn = getNextBlockList(childLC, 
Constants.EN_COLUMN,
-                            positionAtBreak, restartAtLM);
+                            positionAtBreak, restartAtLM, firstElements);
                 } else {
                     log.debug("PLM> iOptPageCount= " + optimalPageCount
                             + " pageBreaks.size()= " + 
alg.getPageBreaks().size());
@@ -390,6 +415,27 @@
     }
 
     /**
+     * Returns {...@code true} if the given position or one of its descendants
+     * corresponds to a non-restartable LM.
+     *
+     * @param position a position
+     * @return {...@code true} if there is a non-restartable LM in the 
hierarchy
+     */
+    private boolean containsNonRestartableLM(Position position) {
+        LayoutManager lm = position.getLM();
+        if (lm != null && !lm.isRestartable()) {
+            return true;
+        } else {
+            Position subPosition = position.getPosition();
+            if (subPosition == null) {
+                return false;
+            } else {
+                return containsNonRestartableLM(subPosition);
+            }
+        }
+    }
+
+    /**
      * Phase 3 of Knuth algorithm: Adds the areas
      * @param alg PageBreakingAlgorithm instance which determined the breaks
      * @param partCount number of parts (pages) to be rendered
@@ -585,7 +631,7 @@
      */
     protected int getNextBlockList(LayoutContext childLC,
             int nextSequenceStartsOn) {
-        return getNextBlockList(childLC, nextSequenceStartsOn, null, null);
+        return getNextBlockList(childLC, nextSequenceStartsOn, null, null, 
null);
     }
 
     /**
@@ -598,11 +644,12 @@
      * @param positionAtIPDChange last element on the part before an IPD change
      * @param restartAtLM the layout manager from which to restart, if IPD
      * change occurs between two LMs
+     * @param firstElements elements from non-restartable LMs on the new page
      * @return the page on which the next content should appear after a hard
      * break
      */
     protected int getNextBlockList(LayoutContext childLC, int 
nextSequenceStartsOn,
-            Position positionAtIPDChange, LayoutManager restartAtLM) {
+            Position positionAtIPDChange, LayoutManager restartAtLM, List 
firstElements) {
         updateLayoutContext(childLC);
         //Make sure the span change signal is reset
         childLC.signalSpanChange(Constants.NOT_SET);
@@ -614,6 +661,7 @@
         } else {
             returnedList = getNextKnuthElements(childLC, alignment, 
positionAtIPDChange,
                     restartAtLM);
+            returnedList.addAll(0, firstElements);
         }
         if (returnedList != null) {
             if (returnedList.isEmpty()) {

Modified: 
xmlgraphics/fop/branches/Temp_ChangingIPDHack/src/java/org/apache/fop/layoutmgr/BlockLayoutManager.java
URL: 
http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_ChangingIPDHack/src/java/org/apache/fop/layoutmgr/BlockLayoutManager.java?rev=796267&r1=796266&r2=796267&view=diff
==============================================================================
--- 
xmlgraphics/fop/branches/Temp_ChangingIPDHack/src/java/org/apache/fop/layoutmgr/BlockLayoutManager.java
 (original)
+++ 
xmlgraphics/fop/branches/Temp_ChangingIPDHack/src/java/org/apache/fop/layoutmgr/BlockLayoutManager.java
 Tue Jul 21 12:01:20 2009
@@ -559,5 +559,10 @@
         }
     }
 
+    /** {...@inheritdoc} */
+    public boolean isRestartable() {
+        return true;
+    }
+
 }
 

Modified: 
xmlgraphics/fop/branches/Temp_ChangingIPDHack/src/java/org/apache/fop/layoutmgr/FlowLayoutManager.java
URL: 
http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_ChangingIPDHack/src/java/org/apache/fop/layoutmgr/FlowLayoutManager.java?rev=796267&r1=796266&r2=796267&view=diff
==============================================================================
--- 
xmlgraphics/fop/branches/Temp_ChangingIPDHack/src/java/org/apache/fop/layoutmgr/FlowLayoutManager.java
 (original)
+++ 
xmlgraphics/fop/branches/Temp_ChangingIPDHack/src/java/org/apache/fop/layoutmgr/FlowLayoutManager.java
 Tue Jul 21 12:01:20 2009
@@ -398,5 +398,10 @@
         return getCurrentPV().getBodyRegion().getBPD();
     }
 
+    /** {...@inheritdoc} */
+    public boolean isRestartable() {
+        return true;
+    }
+
 }
 

Modified: 
xmlgraphics/fop/branches/Temp_ChangingIPDHack/src/java/org/apache/fop/layoutmgr/LayoutManager.java
URL: 
http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_ChangingIPDHack/src/java/org/apache/fop/layoutmgr/LayoutManager.java?rev=796267&r1=796266&r2=796267&view=diff
==============================================================================
--- 
xmlgraphics/fop/branches/Temp_ChangingIPDHack/src/java/org/apache/fop/layoutmgr/LayoutManager.java
 (original)
+++ 
xmlgraphics/fop/branches/Temp_ChangingIPDHack/src/java/org/apache/fop/layoutmgr/LayoutManager.java
 Tue Jul 21 12:01:20 2009
@@ -225,4 +225,13 @@
      * elements according to a new IPD value.
      */
     void reset();
+
+    /**
+     * Returns {...@code true} if this layout manager is able to re-generate 
its
+     * Knuth elements after an IPD change.
+     *
+     * @return {...@code true} if this layout manager can be restarted after 
an IPD
+     * change
+     */
+    boolean isRestartable();
 }

Modified: 
xmlgraphics/fop/branches/Temp_ChangingIPDHack/src/java/org/apache/fop/layoutmgr/PageBreaker.java
URL: 
http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_ChangingIPDHack/src/java/org/apache/fop/layoutmgr/PageBreaker.java?rev=796267&r1=796266&r2=796267&view=diff
==============================================================================
--- 
xmlgraphics/fop/branches/Temp_ChangingIPDHack/src/java/org/apache/fop/layoutmgr/PageBreaker.java
 (original)
+++ 
xmlgraphics/fop/branches/Temp_ChangingIPDHack/src/java/org/apache/fop/layoutmgr/PageBreaker.java
 Tue Jul 21 12:01:20 2009
@@ -129,12 +129,12 @@
     /** {...@inheritdoc} */
     protected int getNextBlockList(LayoutContext childLC,
             int nextSequenceStartsOn) {
-        return getNextBlockList(childLC, nextSequenceStartsOn, null, null);
+        return getNextBlockList(childLC, nextSequenceStartsOn, null, null, 
null);
     }
 
     /** {...@inheritdoc} */
     protected int getNextBlockList(LayoutContext childLC, int 
nextSequenceStartsOn,
-            Position positionAtIPDChange, LayoutManager restartLM) {
+            Position positionAtIPDChange, LayoutManager restartLM, List 
firstElements) {
         if (!firstPart) {
             // if this is the first page that will be created by
             // the current BlockSequence, it could have a break
@@ -146,7 +146,8 @@
         pageBreakHandled = true;
         pageProvider.setStartOfNextElementList(pslm.getCurrentPageNum(),
                 pslm.getCurrentPV().getCurrentSpan().getCurrentFlowIndex());
-        return super.getNextBlockList(childLC, nextSequenceStartsOn, 
positionAtIPDChange, restartLM);
+        return super.getNextBlockList(childLC, nextSequenceStartsOn, 
positionAtIPDChange,
+                restartLM, firstElements);
     }
 
     private boolean containsFootnotes(List contentList, LayoutContext context) 
{

Modified: 
xmlgraphics/fop/branches/Temp_ChangingIPDHack/src/java/org/apache/fop/layoutmgr/inline/LineLayoutManager.java
URL: 
http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_ChangingIPDHack/src/java/org/apache/fop/layoutmgr/inline/LineLayoutManager.java?rev=796267&r1=796266&r2=796267&view=diff
==============================================================================
--- 
xmlgraphics/fop/branches/Temp_ChangingIPDHack/src/java/org/apache/fop/layoutmgr/inline/LineLayoutManager.java
 (original)
+++ 
xmlgraphics/fop/branches/Temp_ChangingIPDHack/src/java/org/apache/fop/layoutmgr/inline/LineLayoutManager.java
 Tue Jul 21 12:01:20 2009
@@ -1645,5 +1645,11 @@
     public boolean getGeneratesLineArea() {
         return true;
     }
+
+    /** {...@inheritdoc} */
+    public boolean isRestartable() {
+        return true;
+    }
+
 }
 

Added: 
xmlgraphics/fop/branches/Temp_ChangingIPDHack/test/layoutengine/standard-testcases/flow_changing-ipd_4.xml
URL: 
http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_ChangingIPDHack/test/layoutengine/standard-testcases/flow_changing-ipd_4.xml?rev=796267&view=auto
==============================================================================
--- 
xmlgraphics/fop/branches/Temp_ChangingIPDHack/test/layoutengine/standard-testcases/flow_changing-ipd_4.xml
 (added)
+++ 
xmlgraphics/fop/branches/Temp_ChangingIPDHack/test/layoutengine/standard-testcases/flow_changing-ipd_4.xml
 Tue Jul 21 12:01:20 2009
@@ -0,0 +1,158 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You 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 that blocks of texts are re-laid out after a change of 
the flow ipd.
+    </p>
+  </info>
+  <fo>
+    <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format";>
+      <fo:layout-master-set>
+        <fo:simple-page-master master-name="narrow"
+          page-height="300pt" page-width="400pt" margin="50pt">
+          <fo:region-body background-color="#F0F0F0"/>
+        </fo:simple-page-master>
+        <fo:simple-page-master master-name="wide"
+          page-height="300pt" page-width="600pt" margin="50pt">
+          <fo:region-body background-color="#F0F0F0"/>
+        </fo:simple-page-master>
+        <fo:page-sequence-master master-name="pages">
+          <fo:single-page-master-reference master-reference="narrow"/>
+          <fo:repeatable-page-master-reference master-reference="wide"/>
+        </fo:page-sequence-master>
+      </fo:layout-master-set>
+      <fo:page-sequence master-reference="pages">
+        <fo:flow flow-name="xsl-region-body" text-align="justify">
+          <fo:block space-before="10pt" id="b1_1">In olden times when wishing 
still helped one, there 
+            lived a king whose daughters were all beautiful, but the youngest 
was so beautiful that 
+            the sun itself, which has seen so much, was astonished whenever it 
shone in her 
+            face.</fo:block>
+          <fo:block space-before="10pt" id="b1_2">In olden times when wishing 
still helped one, there 
+            lived a king whose daughters were all beautiful, but the youngest 
was so beautiful that 
+            the sun itself, which has seen so much, was astonished whenever it 
shone in her 
+            face.</fo:block>
+          <fo:table table-layout="fixed" width="100%" border="1pt solid black" 
space-before="10pt" 
+            padding="2pt" border-collapse="separate">
+            <fo:table-body>
+              <fo:table-row>
+                <fo:table-cell>
+                  <fo:block space-before="10pt" id="b1_3">In olden times when 
wishing still helped 
+                    one, there lived a king whose daughters were all 
beautiful, but the youngest was 
+                    so beautiful that the sun itself, which has seen so much, 
was astonished 
+                    whenever it shone in her face.</fo:block>
+                  <fo:block space-before="10pt" id="b1_4">In olden times when 
wishing still helped 
+                    one, there lived a king whose daughters were all 
beautiful, but the youngest was 
+                    so beautiful that the sun itself, which has seen so much, 
was astonished 
+                    whenever it shone in her face.</fo:block>
+                </fo:table-cell>
+              </fo:table-row>
+            </fo:table-body>
+          </fo:table>
+          <fo:block space-before="10pt" id="b1_5" border-top="1pt solid 
red">In olden times when 
+            wishing still helped one, there lived a king whose daughters were 
all beautiful, but the 
+            youngest was so beautiful that the sun itself, which has seen so 
much, was astonished 
+            whenever it shone in her face.</fo:block>
+          <fo:block space-before="10pt" id="b1_6">In olden times when wishing 
still helped one, there 
+            lived a king whose daughters were all beautiful, but the youngest 
was so beautiful that 
+            the sun itself, which has seen so much, was astonished whenever it 
shone in her 
+            face.</fo:block>
+        </fo:flow>
+      </fo:page-sequence>
+      <fo:page-sequence master-reference="pages">
+        <fo:flow flow-name="xsl-region-body" text-align="justify">
+          <fo:block space-before="10pt" id="b2_1">In olden times when wishing 
still helped one, there 
+            lived a king whose daughters were all beautiful, but the youngest 
was so beautiful that 
+            the sun itself, which has seen so much, was astonished whenever it 
shone in her 
+            face.</fo:block>
+          <fo:block space-before="10pt" id="b2_2">In olden times when wishing 
still helped one, there 
+            lived a king whose daughters were all beautiful, but the youngest 
was so beautiful that 
+            the sun itself, which has seen so much, was astonished whenever it 
shone in her 
+            face.</fo:block>
+          <fo:list-block space-before="10pt" 
provisional-distance-between-starts="0.5cm">
+            <fo:list-item>
+              <fo:list-item-label end-indent="label-end()">
+                <fo:block start-indent="2pt">•</fo:block>
+              </fo:list-item-label>
+              <fo:list-item-body start-indent="body-start()">
+                <fo:block space-before="10pt" id="b2_3">In olden times when 
wishing still helped 
+                  one, there lived a king whose daughters were all beautiful, 
but the youngest was 
+                  so beautiful that the sun itself, which has seen so much, 
was 
+                  astonished…</fo:block>
+              </fo:list-item-body>
+            </fo:list-item>
+            <fo:list-item>
+              <fo:list-item-label end-indent="label-end()">
+                <fo:block start-indent="2pt">•</fo:block>
+              </fo:list-item-label>
+              <fo:list-item-body start-indent="body-start()">
+                <fo:block id="b2_4">In olden times when wishing still helped 
one, there lived a king 
+                  whose daughters were all beautiful, but the youngest was so 
beautiful that the sun 
+                  itself, which has seen so much, was astonished…</fo:block>
+              </fo:list-item-body>
+            </fo:list-item>
+          </fo:list-block>
+          <fo:block space-before="10pt" space-before.conditionality="retain" 
border-top="1pt solid 
+            red" id="b2_5">In olden times when wishing still helped one, there 
lived a king whose 
+            daughters were all beautiful, but the youngest was so beautiful 
that the sun itself, 
+            which has seen so much, was astonished whenever it shone in her 
face.</fo:block>
+          <fo:block space-before="10pt" id="b2_6">In olden times when wishing 
still helped one, there 
+            lived a king whose daughters were all beautiful, but the youngest 
was so beautiful that 
+            the sun itself, which has seen so much, was astonished whenever it 
shone in her 
+            face.</fo:block>
+        </fo:flow>
+      </fo:page-sequence>
+    </fo:root>
+  </fo>
+  <checks>
+    <!-- First page sequence – table -->
+    <eval expected="(solid,#000000,1000)"
+                            
xpath="//pageSequence[1]/pageViewport[2]//flow/block[1]/@border-after"/>
+    <eval expected="300000" 
xpath="//pageSequence[1]/pageViewport[2]//flow/block[1]//lineArea[1]/@ipd"/>
+    <eval expected="b1_4"   
xpath="//pageSequence[1]/pageViewport[2]//flow/block[1]/block/block/@prod-id"/>
+    <eval expected="In"     
xpath="//pageSequence[1]/pageViewport[2]//flow/block[1]//lineArea[1]/text/word[1]"/>
+    <eval expected="olden"  
xpath="//pageSequence[1]/pageViewport[2]//flow/block[1]//lineArea[1]/text/word[2]"/>
+    <eval expected="her"    
xpath="//pageSequence[1]/pageViewport[2]//flow/block[1]//lineArea[4]/text/word[position()=last()-1]"/>
+    <eval expected="face."  
xpath="//pageSequence[1]/pageViewport[2]//flow/block[1]//lineArea[4]/text/word[position()=last()]"/>
+
+    <eval expected="b1_5"   
xpath="//pageSequence[1]/pageViewport[2]//flow/block[2]/@prod-id"/>
+    <eval expected="500000" 
xpath="//pageSequence[1]/pageViewport[2]//flow/block[2]/@ipd"/>
+    <eval expected="(solid,#ff0000,1000)"
+                            
xpath="//pageSequence[1]/pageViewport[2]//flow/block[2]/@border-before"/>
+    <eval expected="In"     
xpath="//pageSequence[1]/pageViewport[2]//flow/block[2]//lineArea[1]/text/word[1]"/>
+    <eval expected="olden"  
xpath="//pageSequence[1]/pageViewport[2]//flow/block[2]//lineArea[1]/text/word[2]"/>
+
+    <!-- Second page sequence – list -->
+    <eval expected="300000" 
xpath="//pageSequence[2]/pageViewport[2]//flow/block[1]/@ipd"/>
+    <eval expected="b2_4"   
xpath="//pageSequence[2]/pageViewport[2]//flow/block[1]/block/block[2]/block/@prod-id"/>
+    <eval expected="In"     
xpath="//pageSequence[2]/pageViewport[2]//flow/block[1]/block/block[2]/block/lineArea[1]/text/word[1]"/>
+    <eval expected="olden"  
xpath="//pageSequence[2]/pageViewport[2]//flow/block[1]/block/block[2]/block/lineArea[1]/text/word[2]"/>
+    <eval expected="was"    
xpath="//pageSequence[2]/pageViewport[2]//flow/block[1]/block/block[2]/block/lineArea[4]/text/word[position()=last()-1]"/>
+    <eval expected="astonished…"
+                            
xpath="//pageSequence[2]/pageViewport[2]//flow/block[1]/block/block[2]/block/lineArea[4]/text/word[position()=last()]"/>
+
+    <eval expected="b2_5"   
xpath="//pageSequence[2]/pageViewport[2]//flow/block[2]/@prod-id"/>
+    <eval expected="500000" 
xpath="//pageSequence[2]/pageViewport[2]//flow/block[2]/@ipd"/>
+    <eval expected="10000"  
xpath="//pageSequence[2]/pageViewport[2]//flow/block[2]/@space-before"/>
+    <eval expected="(solid,#ff0000,1000)"
+                            
xpath="//pageSequence[2]/pageViewport[2]//flow/block[2]/@border-before"/>
+    <eval expected="In"     
xpath="//pageSequence[2]/pageViewport[2]//flow/block[2]//lineArea[1]/text/word[1]"/>
+    <eval expected="olden"  
xpath="//pageSequence[2]/pageViewport[2]//flow/block[2]//lineArea[1]/text/word[2]"/>
+  </checks>
+</testcase>

Propchange: 
xmlgraphics/fop/branches/Temp_ChangingIPDHack/test/layoutengine/standard-testcases/flow_changing-ipd_4.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
xmlgraphics/fop/branches/Temp_ChangingIPDHack/test/layoutengine/standard-testcases/flow_changing-ipd_4.xml
------------------------------------------------------------------------------
    svn:keywords = Revision Id



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to