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 ss...@apache.org on 2018/07/05 11:29:02 UTC

svn commit: r1835125 [2/3] - in /xmlgraphics/fop/branches/Temp_ChangeBars2: fop-core/src/main/java/org/apache/fop/area/ fop-core/src/main/java/org/apache/fop/area/inline/ fop-core/src/main/java/org/apache/fop/fo/ fop-core/src/main/java/org/apache/fop/f...

Modified: xmlgraphics/fop/branches/Temp_ChangeBars2/fop-core/src/main/java/org/apache/fop/render/AbstractRenderer.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_ChangeBars2/fop-core/src/main/java/org/apache/fop/render/AbstractRenderer.java?rev=1835125&r1=1835124&r2=1835125&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_ChangeBars2/fop-core/src/main/java/org/apache/fop/render/AbstractRenderer.java (original)
+++ xmlgraphics/fop/branches/Temp_ChangeBars2/fop-core/src/main/java/org/apache/fop/render/AbstractRenderer.java Thu Jul  5 11:29:01 2018
@@ -41,6 +41,7 @@ import org.apache.fop.apps.FOUserAgent;
 import org.apache.fop.area.Area;
 import org.apache.fop.area.BeforeFloat;
 import org.apache.fop.area.Block;
+import org.apache.fop.area.BlockParent;
 import org.apache.fop.area.BlockViewport;
 import org.apache.fop.area.BodyRegion;
 import org.apache.fop.area.CTM;
@@ -61,6 +62,7 @@ import org.apache.fop.area.inline.Filled
 import org.apache.fop.area.inline.ForeignObject;
 import org.apache.fop.area.inline.Image;
 import org.apache.fop.area.inline.InlineArea;
+import org.apache.fop.area.inline.InlineBlock;
 import org.apache.fop.area.inline.InlineBlockParent;
 import org.apache.fop.area.inline.InlineParent;
 import org.apache.fop.area.inline.InlineViewport;
@@ -70,7 +72,11 @@ import org.apache.fop.area.inline.SpaceA
 import org.apache.fop.area.inline.TextArea;
 import org.apache.fop.area.inline.WordArea;
 import org.apache.fop.fo.Constants;
+import org.apache.fop.fo.flow.ChangeBar;
+import org.apache.fop.fo.properties.Property;
 import org.apache.fop.fonts.FontInfo;
+import org.apache.fop.traits.BorderProps;
+import org.apache.fop.traits.Direction;
 import org.apache.fop.traits.Visibility;
 
 /**
@@ -111,7 +117,74 @@ public abstract class AbstractRenderer
      */
     protected int containingIPPosition;
 
-    /** the currently active PageViewport */
+    /**
+     * The "start edge" IP Position of the current column (for change bars)
+     */
+    protected int columnStartIPPosition;
+
+    /**
+     * The "end edge" IP Position of the current column (for change bars)
+     */
+    protected int columnEndIPPosition;
+
+    /**
+     * The "left" position of the current column (for change bars)
+     */
+    protected int columnLeftIPPosition;
+
+    /**
+     * The "right" position of the current column (for change bars)
+     */
+    protected int columnRightIPPosition;
+
+    /**
+     * The number of columns in the span (for change bars)
+     */
+    protected int columnCount;
+
+    /**
+     * The index number of the current column (for change bars)
+     */
+    protected int columnIndex;
+
+    /**
+     * The column width (for change bars)
+     */
+    protected int columnWidth;
+
+    /**
+     * The size of column gap (for change bars)
+     */
+    protected int columnGap;
+
+    /**
+     * The block progression direction (for change bars)
+     */
+    protected Direction blockProgressionDirection;
+
+    /**
+     * The inline progression direction (for change bars)
+     */
+    protected Direction inlineProgressionDirection;
+
+    /**
+     * Is binding on start edge of column?
+     */
+    protected boolean bindingOnStartEdge;
+
+    /**
+     * Is binding on end edge of column?
+     */
+    protected boolean bindingOnEndEdge;
+
+    /**
+     * The IP begin offset of coordinate 0
+     */
+    private int beginOffset;
+
+    /**
+     * the currently active PageViewport
+     */
     protected PageViewport currentPageViewport;
 
     /* warned XML handlers */
@@ -407,36 +480,95 @@ public abstract class AbstractRenderer
      * that are positioned into columns.
      * </p>
      *
-     * @param mr  The main reference area
+     * @param mainReference The main reference area
      */
-    protected void renderMainReference(MainReference mr) {
+    protected void renderMainReference(MainReference mainReference) {
         Span span = null;
-        List spans = mr.getSpans();
+        List spans = mainReference.getSpans();
         int saveBPPos = currentBPPosition;
-        int saveSpanBPPos = saveBPPos;
         int saveIPPos = currentIPPosition;
+        int saveSpanBPPos = saveBPPos;
+
         for (Object span1 : spans) {
             span = (Span) span1;
+
+            columnCount = span.getColumnCount();
+            columnGap = span.getColumnGap();
+            columnWidth = span.getColumnWidth();
+
+            blockProgressionDirection = (Direction) span.getTrait(Trait.BLOCK_PROGRESSION_DIRECTION);
+            inlineProgressionDirection = (Direction) span.getTrait(Trait.INLINE_PROGRESSION_DIRECTION);
+
             int level = span.getBidiLevel();
             if (level < 0) {
                 level = 0;
             }
             if ((level & 1) == 1) {
                 currentIPPosition += span.getIPD();
-                currentIPPosition += mr.getColumnGap();
+                currentIPPosition += columnGap;
             }
-            for (int c = 0; c < span.getColumnCount(); c++) {
-                NormalFlow flow = span.getNormalFlow(c);
+
+            for (columnIndex = 0; columnIndex < columnCount; columnIndex++) {
+
+                NormalFlow flow = span.getNormalFlow(columnIndex);
+
+                boolean isLeftToRight = (inlineProgressionDirection == null)
+                        || (inlineProgressionDirection.getEnumValue() == Constants.EN_LR);
+
                 if (flow != null) {
+
+                    // if direction is right to left, then end is left edge,
+                    // else end is right edge (for top-bottom/bottom-top block
+                    // progression directions)
+
+                    // binding edge is on left edge for odd pages and
+                    // on right edge for even pages
+
+                    int pageIndex = currentPageViewport.getPageIndex();
+
+                    bindingOnStartEdge = false;
+                    bindingOnEndEdge = false;
+
+                    if (isLeftToRight) {
+
+                        columnStartIPPosition = 0;
+                        columnEndIPPosition = columnWidth;
+                        columnLeftIPPosition = 0;
+                        columnRightIPPosition = columnWidth;
+
+                        if (blockProgressionDirection == null || blockProgressionDirection.isVertical()) {
+                            if (pageIndex % 2 == 0) {
+                                bindingOnStartEdge = true;
+                            } else {
+                                bindingOnEndEdge = true;
+                            }
+                        }
+
+                    } else {
+
+                        columnStartIPPosition = columnWidth;
+                        columnEndIPPosition = 0;
+                        columnLeftIPPosition = 0;
+                        columnRightIPPosition = columnWidth;
+
+                        if (blockProgressionDirection == null || blockProgressionDirection.isVertical()) {
+                            if (pageIndex % 2 == 0) {
+                                bindingOnEndEdge = true;
+                            } else {
+                                bindingOnStartEdge = true;
+                            }
+                        }
+                    }
+
                     currentBPPosition = saveSpanBPPos;
                     if ((level & 1) == 1) {
                         currentIPPosition -= flow.getIPD();
-                        currentIPPosition -= mr.getColumnGap();
+                        currentIPPosition -= columnGap;
                     }
                     renderFlow(flow);
                     if ((level & 1) == 0) {
                         currentIPPosition += flow.getIPD();
-                        currentIPPosition += mr.getColumnGap();
+                        currentIPPosition += columnGap;
                     }
                 }
             }
@@ -504,7 +636,6 @@ public abstract class AbstractRenderer
             endVParea();
 
             // clip if necessary
-
             currentIPPosition = saveIP;
             currentBPPosition = saveBP;
         } else {
@@ -584,6 +715,18 @@ public abstract class AbstractRenderer
      */
     protected void renderBlock(Block block) {
         assert block != null;
+        List<ChangeBar> changeBarList = block.getChangeBarList();
+
+        if (changeBarList != null && !changeBarList.isEmpty()) {
+            int saveIP = currentIPPosition;
+            int saveBP = currentBPPosition;
+
+            drawChangeBars(block, changeBarList);
+
+            currentIPPosition = saveIP;
+            currentBPPosition = saveBP;
+        }
+
         List children = block.getChildAreas();
         boolean inNewLayer = false;
         if (maybeStartLayer(block)) {
@@ -628,7 +771,17 @@ public abstract class AbstractRenderer
     }
 
     /**
+     * Renders an inline block area.
+     *
+     * @param inlineBlock The inline block area
+     */
+    protected void renderInlineBlock(InlineBlock inlineBlock) {
+        renderBlock(inlineBlock.getBlock());
+    }
+
+    /**
      * Establish new optional content group layer.
+     *
      * @param layer name of layer
      */
     protected abstract void startLayer(String layer);
@@ -699,6 +852,11 @@ public abstract class AbstractRenderer
      * @param inlineArea inline area text to render
      */
     protected void renderInlineArea(InlineArea inlineArea) {
+        List<ChangeBar> changeBarList = inlineArea.getChangeBarList();
+
+        if (changeBarList != null && !changeBarList.isEmpty()) {
+            drawChangeBars(inlineArea, changeBarList);
+        }
         if (inlineArea instanceof TextArea) {
             renderText((TextArea) inlineArea);
         //} else if (inlineArea instanceof Character) {
@@ -707,6 +865,8 @@ public abstract class AbstractRenderer
             renderWord((WordArea) inlineArea);
         } else if (inlineArea instanceof SpaceArea) {
             renderSpace((SpaceArea) inlineArea);
+        } else if (inlineArea instanceof InlineBlock) {
+            renderInlineBlock((InlineBlock) inlineArea);
         } else if (inlineArea instanceof InlineParent) {
             renderInlineParent((InlineParent) inlineArea);
         } else if (inlineArea instanceof InlineBlockParent) {
@@ -757,6 +917,16 @@ public abstract class AbstractRenderer
         List children = text.getChildAreas();
         int saveIP = currentIPPosition;
         int saveBP = currentBPPosition;
+
+        List<ChangeBar> changeBarList = text.getChangeBarList();
+
+        if (changeBarList != null && !changeBarList.isEmpty()) {
+            drawChangeBars(text, changeBarList);
+
+            currentIPPosition = saveIP;
+            currentBPPosition = saveBP;
+        }
+
         for (Object aChildren : children) {
             InlineArea inline = (InlineArea) aChildren;
             renderInlineArea(inline);
@@ -877,6 +1047,11 @@ public abstract class AbstractRenderer
      * (todo) Make renderImage() protected
      */
     public void renderImage(Image image, Rectangle2D pos) {
+        List<ChangeBar> changeBarList = image.getChangeBarList();
+
+        if (changeBarList != null && !changeBarList.isEmpty()) {
+            drawChangeBars(image, changeBarList);
+        }
         // Default: do nothing.
         // Some renderers (ex. Text) don't support images.
     }
@@ -903,6 +1078,12 @@ public abstract class AbstractRenderer
      * (todo) Make renderForeignObject() protected
      */
     protected void renderForeignObject(ForeignObject fo, Rectangle2D pos) {
+        List<ChangeBar> changeBarList = fo.getChangeBarList();
+
+        if (changeBarList != null && !changeBarList.isEmpty()) {
+            drawChangeBars(fo, changeBarList);
+        }
+
         // Default: do nothing.
         // Some renderers (ex. Text) don't support foreign objects.
     }
@@ -975,4 +1156,191 @@ public abstract class AbstractRenderer
         matrix[5] = Math.round(matrix[5] * 1000);
         return new AffineTransform(matrix);
     }
+
+    /**
+     * Draws all change bars associated with an area.
+     *
+     * @param area The area to draw change bars for
+     * @param changeBarList The list of change bars affecting the area
+     */
+    protected void drawChangeBars(Area area, List<ChangeBar> changeBarList) {
+
+        if (area.getTraitAsBoolean(Trait.IS_REFERENCE_AREA)) {
+            return;
+        }
+
+        Block changeBarArea;
+
+        int saveIP = currentIPPosition;
+        int saveBP = currentBPPosition;
+
+        int currentColumnStartIP = columnStartIPPosition;
+        int currentColumnEndIP = columnEndIPPosition;
+        int currentColumnLeftIP = columnLeftIPPosition;
+        int currentColumnRightIP = columnRightIPPosition;
+
+        for (ChangeBar changeBar : changeBarList) {
+
+            boolean isLeftToRight = (inlineProgressionDirection == null)
+                    || (inlineProgressionDirection.getEnumValue() == Constants.EN_LR);
+
+            changeBarArea = new Block();
+
+            // currentIPPosition is reset to zero so from now on all multicolumn
+            // dimensions has to be calculated relatively to the given column
+            currentIPPosition = 0;
+            currentBPPosition = saveBP;
+
+            int changeBarWidth = changeBar.getWidth().getValue();
+            int changeBarOffset = changeBar.getOffset().getValue();
+
+            if (isLeftToRight) {
+                currentColumnStartIP = columnStartIPPosition - changeBarWidth;
+                currentColumnLeftIP = columnLeftIPPosition - changeBarWidth;
+            } else {
+                currentColumnEndIP = columnEndIPPosition - changeBarWidth;
+                currentColumnLeftIP = columnLeftIPPosition - changeBarWidth;
+            }
+
+            // xOffset by default is negative width for change bars placed on the
+            // start edge (overriden if placement is at the end edge)
+            int xOffset = currentColumnStartIP;
+
+            // xScale is for adding or subtracting the offset of the change bar
+            // depending on placing the bar towards or away from the edge it is
+            // bound to
+            int xScale = -1;
+
+            // determines currentIPPosition based on placement
+            switch (changeBar.getPlacement()) {
+                case EN_START:
+                    xOffset = currentColumnStartIP;
+                    xScale = -1;
+                    break;
+                case EN_END:
+                    xOffset = currentColumnEndIP;
+                    xScale = 1;
+                    break;
+                case EN_LEFT:
+                    xOffset = currentColumnLeftIP;
+                    xScale = (isLeftToRight) ? -1 : 1;
+                    break;
+                case EN_RIGHT:
+                    xOffset = currentColumnRightIP;
+                    xScale = (isLeftToRight) ? 1 : -1;
+                    break;
+                case EN_INSIDE:
+                    if (bindingOnStartEdge) {
+                        xOffset = currentColumnStartIP;
+                        xScale = -1;
+                    } else if (bindingOnEndEdge) {
+                        xOffset = currentColumnEndIP;
+                        xScale = 1;
+                    } else {
+                        xOffset = currentColumnStartIP;
+                        xScale = -1;
+                    }
+                    break;
+                case EN_OUTSIDE:
+                    if (bindingOnStartEdge) {
+                        xOffset = columnEndIPPosition;
+                        xScale = 1;
+                    } else if (bindingOnEndEdge) {
+                        xOffset = columnStartIPPosition;
+                        xScale = -1;
+                    } else {
+                        xOffset = columnStartIPPosition;
+                        xScale = -1;
+                    }
+                    break;
+                case EN_ALTERNATE:
+                    if (columnCount == 2) {
+                        if (columnIndex == 0) {
+                            xOffset = columnStartIPPosition;
+                            xScale = -1;
+                        } else {
+                            xOffset = columnEndIPPosition;
+                            xScale = 1;
+                        }
+                    } else {
+                        if (bindingOnStartEdge) {
+                            xOffset = columnEndIPPosition;
+                            xScale = 1;
+                        } else if (bindingOnEndEdge) {
+                            xOffset = columnStartIPPosition;
+                            xScale = -1;
+                        } else {
+                            xOffset = columnStartIPPosition;
+                            xScale = -1;
+                        }
+                    }
+                    break;
+                default:
+                    break;
+            }
+
+            if (isLeftToRight) {
+                xOffset += xScale * changeBarOffset;
+            } else {
+                xOffset -= xScale * changeBarOffset;
+            }
+
+            xOffset += getBeginOffset();
+
+            // Change bar area has 0 ipd, class xsl-absolute, no margin or padding
+            changeBarArea.setAreaClass(Area.CLASS_ABSOLUTE);
+            changeBarArea.setIPD(0);
+
+            BorderProps props = BorderProps.makeRectangular(
+                    changeBar.getStyle(), changeBarWidth, changeBar.getColor(),
+                    BorderProps.Mode.SEPARATE);
+
+            changeBarArea.addTrait(Trait.BORDER_START, props);
+            changeBarArea.addTrait(Trait.BORDER_END, props);
+
+            changeBarArea.setXOffset(xOffset);
+
+            int areaHeight = area.getAllocBPD();
+
+            if (area instanceof BlockParent) {
+                changeBarArea.setBPD(areaHeight);
+                changeBarArea.setYOffset(((BlockParent) area).getYOffset());
+                renderBlock(changeBarArea);
+
+            } else {
+                if (areaHeight > 0) {
+                    Property p = changeBar.getLineHeight().getOptimum(DummyPercentBaseContext.getInstance());
+                    int lineHeight = p.getLength().getValue();
+                    changeBarArea.setBPD(lineHeight);
+                    changeBarArea.setYOffset(areaHeight - lineHeight);
+                }
+                renderInlineBlock(new InlineBlock(changeBarArea));
+            }
+
+            // restore position on page
+            currentIPPosition = saveIP;
+            currentBPPosition = saveBP;
+        }
+    }
+
+    /**
+     * Returns the begin offset of the inline begin (changes by reference area
+     * transforms).
+     *
+     * @return the offset from current coordinate system 0 that the IP begin is
+     * at
+     */
+    protected int getBeginOffset() {
+        return beginOffset;
+    }
+
+    /**
+     * Sets the begin offset for inline progression begin (changes by reference
+     * area tranforms).
+     *
+     * @param offset the new offset from IPP 0 that true IP start is at
+     */
+    protected void setBeginOffset(int offset) {
+        beginOffset = offset;
+    }
 }

Modified: xmlgraphics/fop/branches/Temp_ChangeBars2/fop-core/src/main/java/org/apache/fop/render/xml/XMLRenderer.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_ChangeBars2/fop-core/src/main/java/org/apache/fop/render/xml/XMLRenderer.java?rev=1835125&r1=1835124&r2=1835125&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_ChangeBars2/fop-core/src/main/java/org/apache/fop/render/xml/XMLRenderer.java (original)
+++ xmlgraphics/fop/branches/Temp_ChangeBars2/fop-core/src/main/java/org/apache/fop/render/xml/XMLRenderer.java Thu Jul  5 11:29:01 2018
@@ -72,6 +72,7 @@ import org.apache.fop.area.inline.Contai
 import org.apache.fop.area.inline.ForeignObject;
 import org.apache.fop.area.inline.Image;
 import org.apache.fop.area.inline.InlineArea;
+import org.apache.fop.area.inline.InlineBlock;
 import org.apache.fop.area.inline.InlineBlockParent;
 import org.apache.fop.area.inline.InlineParent;
 import org.apache.fop.area.inline.InlineViewport;
@@ -692,6 +693,26 @@ public class XMLRenderer extends Abstrac
         endElement("block");
     }
 
+    /** {@inheritDoc} */
+    @Override
+    protected void renderInlineBlock(InlineBlock inlineBlock) {
+        Block block = inlineBlock.getBlock();
+        atts.clear();
+        addAreaAttributes(block);
+        addTraitAttributes(block);
+        if (block.getXOffset() != 0) {
+            addAttribute("left-offset", block.getXOffset());
+        }
+        if (block.getYOffset() != 0) {
+            addAttribute("top-offset", block.getYOffset());
+        }
+        startElement("inlineblock", atts);
+        if (block.getChildAreas() != null) {
+           renderBlocks(null, block.getChildAreas());
+        }
+        endElement("inlineblock");
+    }
+
     /**
      * {@inheritDoc}
      */
@@ -943,6 +964,4 @@ public class XMLRenderer extends Abstrac
             addAttribute("reversed", "true");
         }
     }
-
-
 }

Modified: xmlgraphics/fop/branches/Temp_ChangeBars2/fop/src/documentation/intermediate-format-ng/fop-intermediate-format-ng-datatypes.xsd
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_ChangeBars2/fop/src/documentation/intermediate-format-ng/fop-intermediate-format-ng-datatypes.xsd?rev=1835125&r1=1835124&r2=1835125&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_ChangeBars2/fop/src/documentation/intermediate-format-ng/fop-intermediate-format-ng-datatypes.xsd (original)
+++ xmlgraphics/fop/branches/Temp_ChangeBars2/fop/src/documentation/intermediate-format-ng/fop-intermediate-format-ng-datatypes.xsd Thu Jul  5 11:29:01 2018
@@ -67,6 +67,8 @@
   </xs:simpleType>
   <xs:simpleType name="borderStyle">
     <xs:restriction base="xs:string">
+      <xs:enumeration value="none"/>
+      <xs:enumeration value="hidden"/>
       <xs:enumeration value="solid"/>
       <xs:enumeration value="dotted"/>
       <xs:enumeration value="dashed"/>
@@ -79,6 +81,8 @@
   </xs:simpleType>
   <xs:simpleType name="ruleStyle">
     <xs:restriction base="xs:string">
+      <xs:enumeration value="none"/>
+      <xs:enumeration value="hidden"/>
       <xs:enumeration value="solid"/>
       <xs:enumeration value="dotted"/>
       <xs:enumeration value="dashed"/>
@@ -92,7 +96,7 @@
       <!-- TODO refine me: \w+ will not be good enough for CMYK color, for example
       <xs:pattern value="\((solid|dotted|dashed|double|groove|ridge|inset|outset),\w+,\d+(,collapse-(inner|outer))?"/>
       -->
-      <xs:pattern value="\((solid|dotted|dashed|double|groove|ridge|inset|outset),.+\)"/>
+      <xs:pattern value="\((none|hidden|solid|dotted|dashed|double|groove|ridge|inset|outset),.+\)"/>
     </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="lengthListType">

Added: xmlgraphics/fop/branches/Temp_ChangeBars2/fop/test/layoutengine/standard-testcases/change-bar_block.xml
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_ChangeBars2/fop/test/layoutengine/standard-testcases/change-bar_block.xml?rev=1835125&view=auto
==============================================================================
--- xmlgraphics/fop/branches/Temp_ChangeBars2/fop/test/layoutengine/standard-testcases/change-bar_block.xml (added)
+++ xmlgraphics/fop/branches/Temp_ChangeBars2/fop/test/layoutengine/standard-testcases/change-bar_block.xml Thu Jul  5 11:29:01 2018
@@ -0,0 +1,73 @@
+<?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 fo:change-bar-* on block elements.</p>
+   </info>
+   <fo>
+      <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
+         <fo:layout-master-set>
+            <fo:simple-page-master page-height="145mm" page-width="210mm" margin="10mm"
+               master-name="master">
+               <fo:region-body column-count="2" column-gap="10mm"/>
+            </fo:simple-page-master>
+         </fo:layout-master-set>
+         <fo:page-sequence master-reference="master">
+            <fo:flow flow-name="xsl-region-body">
+               
+               <fo:block change-bar-style="solid" change-bar-color="red" change-bar-offset="3mm"
+                  change-bar-width="0.3mm">
+                  
+                  <fo:change-bar-begin change-bar-class="global"/>
+                  <fo:block id="red-01" color="red">Lorem ipsum dolor sit amet, consectetur adipiscing
+                     elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</fo:block>
+                  <fo:change-bar-begin change-bar-class="local-blue" change-bar-color="blue"
+                     change-bar-offset="2mm"/>
+                  <fo:block id="blue-01" color="blue">Lorem ipsum dolor sit amet, consectetur adipiscing
+                     elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</fo:block>
+                  <fo:change-bar-end change-bar-class="local-blue"/>
+                  <fo:change-bar-begin change-bar-class="local-green" change-bar-color="green"
+                     change-bar-offset="2mm"/>
+                  <fo:block id="green-01" color="green">Lorem ipsum dolor sit amet, consectetur adipiscing
+                     elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</fo:block>
+                  <fo:change-bar-end change-bar-class="local-green"/>
+                  <fo:block id="red-02" color="red">Lorem ipsum dolor sit amet, consectetur adipiscing
+                     elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</fo:block>
+                  <fo:change-bar-end change-bar-class="global"/>
+                  
+               </fo:block>
+            </fo:flow>
+         </fo:page-sequence>
+      </fo:root>
+   </fo>
+   <checks>
+      <eval expected="(solid,#ff0000,850)" xpath="//block[@prod-id='red-01']/block[1]/@border-start"/>
+      <eval expected="-9353" xpath="//block[@prod-id='red-01']/block[1]/@left-offset"/>
+      <eval expected="(solid,#ff0000,850)" xpath="//block[@prod-id='blue-01']/block[1]/@border-start"/>
+      <eval expected="-9353" xpath="//block[@prod-id='blue-01']/block[1]/@left-offset"/>
+      <eval expected="(solid,#0000ff,850)" xpath="//block[@prod-id='blue-01']/block[2]/@border-start"/>
+      <eval expected="-6519" xpath="//block[@prod-id='blue-01']/block[2]/@left-offset"/>
+      <eval expected="(solid,#ff0000,850)" xpath="//block[@prod-id='green-01']/block[1]/@border-start"/>
+      <eval expected="-9353" xpath="//block[@prod-id='green-01']/block[1]/@left-offset"/>
+      <eval expected="(solid,#008000,850)" xpath="//block[@prod-id='green-01']/block[2]/@border-start"/>
+      <eval expected="-6519" xpath="//block[@prod-id='green-01']/block[2]/@left-offset"/>
+      <eval expected="(solid,#ff0000,850)" xpath="//block[@prod-id='red-02']/block[1]/@border-start"/>
+      <eval expected="-9353" xpath="//block[@prod-id='red-02']/block[1]/@left-offset"/>
+   </checks>
+</testcase>

Propchange: xmlgraphics/fop/branches/Temp_ChangeBars2/fop/test/layoutengine/standard-testcases/change-bar_block.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: xmlgraphics/fop/branches/Temp_ChangeBars2/fop/test/layoutengine/standard-testcases/change-bar_inline.xml
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_ChangeBars2/fop/test/layoutengine/standard-testcases/change-bar_inline.xml?rev=1835125&view=auto
==============================================================================
--- xmlgraphics/fop/branches/Temp_ChangeBars2/fop/test/layoutengine/standard-testcases/change-bar_inline.xml (added)
+++ xmlgraphics/fop/branches/Temp_ChangeBars2/fop/test/layoutengine/standard-testcases/change-bar_inline.xml Thu Jul  5 11:29:01 2018
@@ -0,0 +1,81 @@
+<?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 fo:change-bar-* on inline elements.</p>
+   </info>
+   <fo>
+      <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
+         <fo:layout-master-set>
+            <fo:simple-page-master page-height="145mm" page-width="210mm" margin="10mm"
+               master-name="master">
+               <fo:region-body column-count="2" column-gap="10mm"/>
+            </fo:simple-page-master>
+         </fo:layout-master-set>
+         <fo:page-sequence master-reference="master">
+            <fo:flow flow-name="xsl-region-body">
+
+               <fo:block change-bar-style="solid" change-bar-color="red" change-bar-offset="2mm"
+                  change-bar-width="0.3mm">
+
+                  <fo:block>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod
+                        <fo:change-bar-begin change-bar-class="red-01"/><fo:inline id="red-01"
+                        color="red">tempor incididunt</fo:inline><fo:change-bar-end
+                        change-bar-class="red-01"/> ut labore et dolore magna aliqua.</fo:block>
+
+                  <fo:block>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod
+                        <fo:change-bar-begin change-bar-class="red-02"/><fo:inline id="red-02"
+                        color="red">tempor incididunt</fo:inline><fo:change-bar-end
+                        change-bar-class="red-02"/> ut labore et <fo:change-bar-begin
+                        change-bar-color="blue" change-bar-offset="3mm" change-bar-class="blue-02"
+                        /><fo:inline id="blue-02" color="blue">dolore
+                        magna</fo:inline><fo:change-bar-end change-bar-class="blue-02"/>
+                     aliqua.</fo:block>
+
+                  <fo:block>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod
+                        <fo:change-bar-begin change-bar-class="red-03"/><fo:inline id="red-03-a"
+                        color="red">tempor incididunt ut </fo:inline><fo:change-bar-begin
+                        change-bar-color="blue" change-bar-offset="3mm" change-bar-class="blue-03"
+                        /><fo:inline id="blue-03" color="blue">labore</fo:inline><fo:change-bar-end
+                        change-bar-class="blue-03"/><fo:inline id="red-03-b" color="red"> et dolore
+                        magna</fo:inline><fo:change-bar-end change-bar-class="red-03"/>
+                     aliqua.</fo:block>
+
+               </fo:block>
+            </fo:flow>
+         </fo:page-sequence>
+      </fo:root>
+   </fo>
+   <checks>
+      <eval expected="(solid,#ff0000,850)" xpath="//inlineparent[@prod-id='red-01']/inlineblock[1]/@border-start"/>
+      <eval expected="-6519" xpath="//inlineparent[@prod-id='red-01']/inlineblock[1]/@left-offset"/>
+      <eval expected="(solid,#ff0000,850)" xpath="//inlineparent[@prod-id='red-02']/inlineblock[1]/@border-start"/>
+      <eval expected="-6519" xpath="//inlineparent[@prod-id='red-02']/inlineblock[1]/@left-offset"/>
+      <eval expected="(solid,#0000ff,850)" xpath="//inlineparent[@prod-id='blue-02']/inlineblock[1]/@border-start"/>
+      <eval expected="-9353" xpath="//inlineparent[@prod-id='blue-02']/inlineblock[1]/@left-offset"/>
+      <eval expected="(solid,#ff0000,850)" xpath="//inlineparent[@prod-id='red-03-a']/inlineblock[1]/@border-start"/>
+      <eval expected="-6519" xpath="//inlineparent[@prod-id='red-03-a']/inlineblock[1]/@left-offset"/>
+      <eval expected="(solid,#ff0000,850)" xpath="//inlineparent[@prod-id='blue-03']/inlineblock[1]/@border-start"/>
+      <eval expected="-6519" xpath="//inlineparent[@prod-id='blue-03']/inlineblock[1]/@left-offset"/>
+      <eval expected="(solid,#0000ff,850)" xpath="//inlineparent[@prod-id='blue-03']/inlineblock[2]/@border-start"/>
+      <eval expected="-9353" xpath="//inlineparent[@prod-id='blue-03']/inlineblock[2]/@left-offset"/>
+      <eval expected="(solid,#ff0000,850)" xpath="//inlineparent[@prod-id='red-03-b']/inlineblock[1]/@border-start"/>
+      <eval expected="-6519" xpath="//inlineparent[@prod-id='red-03-b']/inlineblock[1]/@left-offset"/>
+   </checks>
+</testcase>

Propchange: xmlgraphics/fop/branches/Temp_ChangeBars2/fop/test/layoutengine/standard-testcases/change-bar_inline.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: xmlgraphics/fop/branches/Temp_ChangeBars2/fop/test/layoutengine/standard-testcases/change-bar_list.xml
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_ChangeBars2/fop/test/layoutengine/standard-testcases/change-bar_list.xml?rev=1835125&view=auto
==============================================================================
--- xmlgraphics/fop/branches/Temp_ChangeBars2/fop/test/layoutengine/standard-testcases/change-bar_list.xml (added)
+++ xmlgraphics/fop/branches/Temp_ChangeBars2/fop/test/layoutengine/standard-testcases/change-bar_list.xml Thu Jul  5 11:29:01 2018
@@ -0,0 +1,90 @@
+<?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 fo:change-bar-* on list elements.</p>
+   </info>
+   <fo>
+      <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
+         <fo:layout-master-set>
+            <fo:simple-page-master page-height="145mm" page-width="210mm" margin="10mm"
+               master-name="master">
+               <fo:region-body column-count="2" column-gap="10mm"/>
+            </fo:simple-page-master>
+         </fo:layout-master-set>
+         <fo:page-sequence master-reference="master">
+            <fo:flow flow-name="xsl-region-body">
+
+               <fo:block change-bar-style="solid" change-bar-color="red" change-bar-width="0.3mm"
+                  change-bar-offset="3mm">
+                  <fo:change-bar-begin change-bar-class="list-block"/>
+                  <fo:list-block id="list-block">
+                     <fo:change-bar-begin change-bar-class="list-item-first" change-bar-offset="2mm"
+                        change-bar-color="green"/>
+                     <fo:list-item id="list-item-first">
+                        <fo:list-item-label id="list-item-first-label" end-indent="label-end()">
+                           <fo:block>1</fo:block>
+                        </fo:list-item-label>
+                        <fo:list-item-body id="list-item-first-body" start-indent="body-start()">
+                           <fo:block>First</fo:block>
+                        </fo:list-item-body>
+                     </fo:list-item>
+                     <fo:change-bar-end change-bar-class="list-item-first"/>
+                     <fo:list-item id="list-item-second">
+                        <fo:change-bar-begin change-bar-class="list-item-second-label"
+                           change-bar-offset="2mm" change-bar-color="blue"/>
+                        <fo:list-item-label id="list-item-second-label" end-indent="label-end()">
+                           <fo:block>2</fo:block>
+                        </fo:list-item-label>
+                        <fo:change-bar-end change-bar-class="list-item-second-label"/>
+                        <fo:change-bar-begin change-bar-class="list-item-second-body" change-bar-offset="1mm"
+                           change-bar-color="magenta"/>
+                        <fo:list-item-body id="list-item-second-body" start-indent="body-start()">
+                           <fo:block>Second</fo:block>
+                        </fo:list-item-body>
+                        <fo:change-bar-end change-bar-class="list-item-second-body"/>
+                     </fo:list-item>
+                  </fo:list-block>
+                  <fo:change-bar-end change-bar-class="list-block"/>
+               </fo:block>
+            </fo:flow>
+         </fo:page-sequence>
+      </fo:root>
+   </fo>
+   <checks>
+      <!-- the first -->
+      <eval expected="(solid,#ff0000,850)" xpath="//block[@prod-id='list-item-first-label']/block[1]/block[1]/@border-start"/>
+      <eval expected="-9353" xpath="//block[@prod-id='list-item-first-label']/block[1]/block[1]/@left-offset"/>
+      <eval expected="(solid,#008000,850)" xpath="//block[@prod-id='list-item-first-label']/block[1]/block[2]/@border-start"/>
+      <eval expected="-6519" xpath="//block[@prod-id='list-item-first-label']/block[1]/block[2]/@left-offset"/>
+      <eval expected="(solid,#ff0000,850)" xpath="//block[@prod-id='list-item-first-body']/block[1]/block[1]/@border-start"/>
+      <eval expected="-9353" xpath="//block[@prod-id='list-item-first-body']/block[1]/block[1]/@left-offset"/>
+      <eval expected="(solid,#008000,850)" xpath="//block[@prod-id='list-item-first-body']/block[1]/block[2]/@border-start"/>
+      <eval expected="-6519" xpath="//block[@prod-id='list-item-first-body']/block[1]/block[2]/@left-offset"/>
+      <!-- the second -->
+      <eval expected="(solid,#ff0000,850)" xpath="//block[@prod-id='list-item-second-label']/block[1]/block[1]/@border-start"/>
+      <eval expected="-9353" xpath="//block[@prod-id='list-item-second-label']/block[1]/block[1]/@left-offset"/>
+      <eval expected="(solid,#0000ff,850)" xpath="//block[@prod-id='list-item-second-label']/block[1]/block[2]/@border-start"/>
+      <eval expected="-6519" xpath="//block[@prod-id='list-item-second-label']/block[1]/block[2]/@left-offset"/>
+      <eval expected="(solid,#ff0000,850)" xpath="//block[@prod-id='list-item-second-body']/block[1]/block[1]/@border-start"/>
+      <eval expected="-9353" xpath="//block[@prod-id='list-item-second-body']/block[1]/block[1]/@left-offset"/>
+      <eval expected="(solid,#ff00ff,850)" xpath="//block[@prod-id='list-item-second-body']/block[1]/block[2]/@border-start"/>
+      <eval expected="-3684" xpath="//block[@prod-id='list-item-second-body']/block[1]/block[2]/@left-offset"/>
+   </checks>
+</testcase>

Propchange: xmlgraphics/fop/branches/Temp_ChangeBars2/fop/test/layoutengine/standard-testcases/change-bar_list.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: xmlgraphics/fop/branches/Temp_ChangeBars2/fop/test/layoutengine/standard-testcases/change-bar_overlapped.xml
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_ChangeBars2/fop/test/layoutengine/standard-testcases/change-bar_overlapped.xml?rev=1835125&view=auto
==============================================================================
--- xmlgraphics/fop/branches/Temp_ChangeBars2/fop/test/layoutengine/standard-testcases/change-bar_overlapped.xml (added)
+++ xmlgraphics/fop/branches/Temp_ChangeBars2/fop/test/layoutengine/standard-testcases/change-bar_overlapped.xml Thu Jul  5 11:29:01 2018
@@ -0,0 +1,95 @@
+<?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 fo:change-bar-* on list elements.</p>
+   </info>
+   <fo>
+      <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
+         <fo:layout-master-set>
+            <fo:simple-page-master page-height="145mm" page-width="210mm" margin="10mm"
+               master-name="master">
+               <fo:region-body column-count="2" column-gap="10mm"/>
+            </fo:simple-page-master>
+         </fo:layout-master-set>
+         <fo:page-sequence master-reference="master">
+            <fo:flow flow-name="xsl-region-body">
+               
+               <fo:block change-bar-style="solid" change-bar-color="red" change-bar-offset="2mm"
+                  change-bar-width="0.3mm">
+                  
+                  <fo:block>
+                     <fo:change-bar-begin change-bar-class="first-half"/><fo:inline color="red"
+                        id="first-half">January February March April May </fo:inline><fo:change-bar-begin
+                           change-bar-class="summer" change-bar-color="green" change-bar-offset="1mm"
+                        /><fo:inline color="brown" id="june-inline">June</fo:inline><fo:change-bar-end
+                           change-bar-class="first-half"/><fo:inline color="green" id="summer"> July
+                              August</fo:inline><fo:change-bar-end change-bar-class="summer"/> September October
+                     November December</fo:block>
+                  
+                  <fo:change-bar-begin change-bar-class="first-half"/>
+                  <fo:block id="january">January</fo:block>
+                  <fo:block id="february">February</fo:block>
+                  <fo:block id="march">March</fo:block>
+                  <fo:wrapper color="red">
+                     <fo:block id="april">April</fo:block>
+                     <fo:block id="may">May</fo:block>
+                  </fo:wrapper>
+                  <fo:change-bar-begin change-bar-class="summer" change-bar-color="green"
+                     change-bar-offset="1mm"/>
+                  <fo:wrapper color="brown">
+                     <fo:block id="june-block">June</fo:block>
+                  </fo:wrapper>
+                  <fo:change-bar-end change-bar-class="first-half"/>
+                  <fo:wrapper color="red">
+                     <fo:block id="july">July</fo:block>
+                     <fo:block id="august">August</fo:block>
+                  </fo:wrapper>
+                  <fo:change-bar-end change-bar-class="summer"/>
+                  <fo:block id="september">September</fo:block>
+                  <fo:block id="october">October</fo:block>
+                  <fo:block id="november">November</fo:block>
+                  <fo:block id="december">December</fo:block>
+                  
+               </fo:block>
+            </fo:flow>
+         </fo:page-sequence>
+      </fo:root>
+   </fo>
+   <checks>
+      <!-- inline -->
+      <eval expected="(solid,#ff0000,850)" xpath="//inlineparent[@prod-id='first-half']/inlineblock[1]/@border-start"/>
+      <eval expected="-6519" xpath="//inlineparent[@prod-id='first-half']/inlineblock[1]/@left-offset"/>
+      <eval expected="(solid,#ff0000,850)" xpath="//inlineparent[@prod-id='june-inline']/inlineblock[1]/@border-start"/>
+      <eval expected="-6519" xpath="//inlineparent[@prod-id='june-inline']/inlineblock[1]/@left-offset"/>
+      <eval expected="(solid,#008000,850)" xpath="//inlineparent[@prod-id='june-inline']/inlineblock[2]/@border-start"/>
+      <eval expected="-3684" xpath="//inlineparent[@prod-id='june-inline']/inlineblock[2]/@left-offset"/>
+      <eval expected="(solid,#008000,850)" xpath="//lineArea[2]/inlineparent[@prod-id='summer']/inlineblock[1]/@border-start"/>
+      <eval expected="-3684" xpath="//lineArea[2]/inlineparent[@prod-id='summer']/inlineblock[1]/@left-offset"/>
+      <!-- block -->
+      <eval expected="(solid,#ff0000,850)" xpath="//block[@prod-id='may']/block[1]/@border-start"/>
+      <eval expected="-6519" xpath="//block[@prod-id='may']/block[1]/@left-offset"/>
+      <eval expected="(solid,#ff0000,850)" xpath="//block[@prod-id='june-block']/block[1]/@border-start"/>
+      <eval expected="-6519" xpath="//block[@prod-id='june-block']/block[1]/@left-offset"/>
+      <eval expected="(solid,#008000,850)" xpath="//block[@prod-id='june-block']/block[2]/@border-start"/>
+      <eval expected="-3684" xpath="//block[@prod-id='june-block']/block[2]/@left-offset"/>
+      <eval expected="(solid,#008000,850)" xpath="//block[@prod-id='july']/block[1]/@border-start"/>
+      <eval expected="-3684" xpath="//block[@prod-id='july']/block[1]/@left-offset"/>
+   </checks>
+</testcase>

Propchange: xmlgraphics/fop/branches/Temp_ChangeBars2/fop/test/layoutengine/standard-testcases/change-bar_overlapped.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: xmlgraphics/fop/branches/Temp_ChangeBars2/fop/test/layoutengine/standard-testcases/change-bar_placement-rtl.xml
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_ChangeBars2/fop/test/layoutengine/standard-testcases/change-bar_placement-rtl.xml?rev=1835125&view=auto
==============================================================================
--- xmlgraphics/fop/branches/Temp_ChangeBars2/fop/test/layoutengine/standard-testcases/change-bar_placement-rtl.xml (added)
+++ xmlgraphics/fop/branches/Temp_ChangeBars2/fop/test/layoutengine/standard-testcases/change-bar_placement-rtl.xml Thu Jul  5 11:29:01 2018
@@ -0,0 +1,226 @@
+<?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 fo:change-bar-start placement.</p>
+   </info>
+   <fo>
+      <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
+         <fo:layout-master-set>
+            <fo:simple-page-master page-height="145mm" page-width="210mm" margin="10mm"
+               master-name="master">
+               <fo:region-body column-count="2" column-gap="10mm"/>
+            </fo:simple-page-master>
+         </fo:layout-master-set>
+         <fo:page-sequence master-reference="master" writing-mode="rl-tb">
+            <fo:flow flow-name="xsl-region-body">
+
+               <fo:block change-bar-style="solid" change-bar-color="red" change-bar-offset="2mm"
+                  change-bar-width="0.3mm">
+
+                  <fo:change-bar-begin change-bar-class="left" change-bar-placement="left"/>
+                  <fo:block id="page1-col1-left">Lorem ipsum dolor sit amet, consectetur adipiscing
+                     elit, sed do eiusmod tempor incididunt ut labore et dolore magna
+                     aliqua.</fo:block>
+                  <fo:change-bar-end change-bar-class="left"/>
+
+                  <fo:change-bar-begin change-bar-class="right" change-bar-placement="right"/>
+                  <fo:block id="page1-col1-right">Lorem ipsum dolor sit amet, consectetur adipiscing
+                     elit, sed do eiusmod tempor incididunt ut labore et dolore magna
+                     aliqua.</fo:block>
+                  <fo:change-bar-end change-bar-class="right"/>
+
+                  <fo:change-bar-begin change-bar-class="start" change-bar-placement="start"/>
+                  <fo:block id="page1-col1-start">Lorem ipsum dolor sit amet, consectetur adipiscing
+                     elit, sed do eiusmod tempor incididunt ut labore et dolore magna
+                     aliqua.</fo:block>
+                  <fo:change-bar-end change-bar-class="start"/>
+
+                  <fo:change-bar-begin change-bar-class="end" change-bar-placement="end"/>
+                  <fo:block id="page1-col1-end">Lorem ipsum dolor sit amet, consectetur adipiscing
+                     elit, sed do eiusmod tempor incididunt ut labore et dolore magna
+                     aliqua.</fo:block>
+                  <fo:change-bar-end change-bar-class="end"/>
+
+                  <fo:change-bar-begin change-bar-class="inside" change-bar-placement="inside"/>
+                  <fo:block id="page1-col1-inside">Lorem ipsum dolor sit amet, consectetur
+                     adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna
+                     aliqua.</fo:block>
+                  <fo:change-bar-end change-bar-class="inside"/>
+
+                  <fo:change-bar-begin change-bar-class="outside" change-bar-placement="outside"/>
+                  <fo:block id="page1-col1-outside">Lorem ipsum dolor sit amet, consectetur
+                     adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna
+                     aliqua.</fo:block>
+                  <fo:change-bar-end change-bar-class="outside"/>
+
+                  <fo:change-bar-begin change-bar-class="left" change-bar-placement="left"/>
+                  <fo:block id="page1-col2-left">Lorem ipsum dolor sit amet, consectetur adipiscing
+                     elit, sed do eiusmod tempor incididunt ut labore et dolore magna
+                     aliqua.</fo:block>
+                  <fo:change-bar-end change-bar-class="left"/>
+
+                  <fo:change-bar-begin change-bar-class="right" change-bar-placement="right"/>
+                  <fo:block id="page1-col2-right">Lorem ipsum dolor sit amet, consectetur adipiscing
+                     elit, sed do eiusmod tempor incididunt ut labore et dolore magna
+                     aliqua.</fo:block>
+                  <fo:change-bar-end change-bar-class="right"/>
+
+                  <fo:change-bar-begin change-bar-class="start" change-bar-placement="start"/>
+                  <fo:block id="page1-col2-start">Lorem ipsum dolor sit amet, consectetur adipiscing
+                     elit, sed do eiusmod tempor incididunt ut labore et dolore magna
+                     aliqua.</fo:block>
+                  <fo:change-bar-end change-bar-class="start"/>
+
+                  <fo:change-bar-begin change-bar-class="end" change-bar-placement="end"/>
+                  <fo:block id="page1-col2-end">Lorem ipsum dolor sit amet, consectetur adipiscing
+                     elit, sed do eiusmod tempor incididunt ut labore et dolore magna
+                     aliqua.</fo:block>
+                  <fo:change-bar-end change-bar-class="end"/>
+
+                  <fo:change-bar-begin change-bar-class="inside" change-bar-placement="inside"/>
+                  <fo:block id="page1-col2-inside">Lorem ipsum dolor sit amet, consectetur
+                     adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna
+                     aliqua.</fo:block>
+                  <fo:change-bar-end change-bar-class="inside"/>
+
+                  <fo:change-bar-begin change-bar-class="outside" change-bar-placement="outside"/>
+                  <fo:block id="page1-col2-outside">Lorem ipsum dolor sit amet, consectetur
+                     adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna
+                     aliqua.</fo:block>
+                  <fo:change-bar-end change-bar-class="outside"/>
+
+                  <fo:change-bar-begin change-bar-class="left" change-bar-placement="left"/>
+                  <fo:block id="page2-col1-left">Lorem ipsum dolor sit amet, consectetur adipiscing
+                     elit, sed do eiusmod tempor incididunt ut labore et dolore magna
+                     aliqua.</fo:block>
+                  <fo:change-bar-end change-bar-class="left"/>
+
+                  <fo:change-bar-begin change-bar-class="right" change-bar-placement="right"/>
+                  <fo:block id="page2-col1-right">Lorem ipsum dolor sit amet, consectetur adipiscing
+                     elit, sed do eiusmod tempor incididunt ut labore et dolore magna
+                     aliqua.</fo:block>
+                  <fo:change-bar-end change-bar-class="right"/>
+
+                  <fo:change-bar-begin change-bar-class="start" change-bar-placement="start"/>
+                  <fo:block id="page2-col1-start">Lorem ipsum dolor sit amet, consectetur adipiscing
+                     elit, sed do eiusmod tempor incididunt ut labore et dolore magna
+                     aliqua.</fo:block>
+                  <fo:change-bar-end change-bar-class="start"/>
+
+                  <fo:change-bar-begin change-bar-class="end" change-bar-placement="end"/>
+                  <fo:block id="page2-col1-end">Lorem ipsum dolor sit amet, consectetur adipiscing
+                     elit, sed do eiusmod tempor incididunt ut labore et dolore magna
+                     aliqua.</fo:block>
+                  <fo:change-bar-end change-bar-class="end"/>
+
+                  <fo:change-bar-begin change-bar-class="inside" change-bar-placement="inside"/>
+                  <fo:block id="page2-col1-inside">Lorem ipsum dolor sit amet, consectetur
+                     adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna
+                     aliqua.</fo:block>
+                  <fo:change-bar-end change-bar-class="inside"/>
+
+                  <fo:change-bar-begin change-bar-class="outside" change-bar-placement="outside"/>
+                  <fo:block id="page2-col1-outside">Lorem ipsum dolor sit amet, consectetur
+                     adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna
+                     aliqua.</fo:block>
+                  <fo:change-bar-end change-bar-class="outside"/>
+
+                  <fo:change-bar-begin change-bar-class="left" change-bar-placement="left"/>
+                  <fo:block id="page2-col2-left">Lorem ipsum dolor sit amet, consectetur adipiscing
+                     elit, sed do eiusmod tempor incididunt ut labore et dolore magna
+                     aliqua.</fo:block>
+                  <fo:change-bar-end change-bar-class="left"/>
+
+                  <fo:change-bar-begin change-bar-class="right" change-bar-placement="right"/>
+                  <fo:block id="page2-col2-right">Lorem ipsum dolor sit amet, consectetur adipiscing
+                     elit, sed do eiusmod tempor incididunt ut labore et dolore magna
+                     aliqua.</fo:block>
+                  <fo:change-bar-end change-bar-class="right"/>
+
+                  <fo:change-bar-begin change-bar-class="start" change-bar-placement="start"/>
+                  <fo:block id="page2-col2-start">Lorem ipsum dolor sit amet, consectetur adipiscing
+                     elit, sed do eiusmod tempor incididunt ut labore et dolore magna
+                     aliqua.</fo:block>
+                  <fo:change-bar-end change-bar-class="start"/>
+
+                  <fo:change-bar-begin change-bar-class="end" change-bar-placement="end"/>
+                  <fo:block id="page2-col2-end">Lorem ipsum dolor sit amet, consectetur adipiscing
+                     elit, sed do eiusmod tempor incididunt ut labore et dolore magna
+                     aliqua.</fo:block>
+                  <fo:change-bar-end change-bar-class="end"/>
+
+                  <fo:change-bar-begin change-bar-class="inside" change-bar-placement="inside"/>
+                  <fo:block id="page2-col2-inside">Lorem ipsum dolor sit amet, consectetur
+                     adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna
+                     aliqua.</fo:block>
+                  <fo:change-bar-end change-bar-class="inside"/>
+
+                  <fo:change-bar-begin change-bar-class="outside" change-bar-placement="outside"/>
+                  <fo:block id="page2-col2-outside">Lorem ipsum dolor sit amet, consectetur
+                     adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna
+                     aliqua.</fo:block>
+                  <fo:change-bar-end change-bar-class="outside"/>
+
+                  <fo:change-bar-begin change-bar-class="alternate" change-bar-placement="alternate"/>
+                  <fo:block id="page3-col1-alternate">Lorem ipsum dolor sit amet, consectetur
+                     adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna
+                     aliqua.</fo:block>
+                  <fo:block id="page3-col2-alternate" break-before="column">Lorem ipsum dolor sit
+                     amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore
+                     et dolore magna aliqua.</fo:block>
+                  <fo:change-bar-end change-bar-class="alternate"/>
+               </fo:block>
+            </fo:flow>
+         </fo:page-sequence>
+      </fo:root>
+   </fo>
+   <checks>
+      <eval expected="-6519" xpath="//block[@prod-id='page1-col1-left']/block[1]/@left-offset"/>
+      <eval expected="5669" xpath="//block[@prod-id='page1-col1-right']/block[1]/@left-offset"/>
+      <eval expected="-6519" xpath="//block[@prod-id='page1-col1-start']/block[1]/@left-offset"/>
+      <eval expected="5669" xpath="//block[@prod-id='page1-col1-end']/block[1]/@left-offset"/>
+      <eval expected="-6519" xpath="//block[@prod-id='page1-col1-inside']/block[1]/@left-offset"/>
+      <eval expected="-5669" xpath="//block[@prod-id='page1-col1-outside']/block[1]/@left-offset"/>
+
+      <eval expected="-6519" xpath="//block[@prod-id='page1-col2-left']/block[1]/@left-offset"/>
+      <eval expected="5669" xpath="//block[@prod-id='page1-col2-right']/block[1]/@left-offset"/>
+      <eval expected="-6519" xpath="//block[@prod-id='page1-col2-start']/block[1]/@left-offset"/>
+      <eval expected="5669" xpath="//block[@prod-id='page1-col2-end']/block[1]/@left-offset"/>
+      <eval expected="-6519" xpath="//block[@prod-id='page1-col2-inside']/block[1]/@left-offset"/>
+      <eval expected="-5669" xpath="//block[@prod-id='page1-col2-outside']/block[1]/@left-offset"/>
+
+      <eval expected="-6519" xpath="//block[@prod-id='page2-col1-left']/block[1]/@left-offset"/>
+      <eval expected="5669" xpath="//block[@prod-id='page2-col1-right']/block[1]/@left-offset"/>
+      <eval expected="-6519" xpath="//block[@prod-id='page2-col1-start']/block[1]/@left-offset"/>
+      <eval expected="5669" xpath="//block[@prod-id='page2-col1-end']/block[1]/@left-offset"/>
+      <eval expected="-6519" xpath="//block[@prod-id='page2-col1-inside']/block[1]/@left-offset"/>
+      <eval expected="-5669" xpath="//block[@prod-id='page2-col1-outside']/block[1]/@left-offset"/>
+
+      <eval expected="-6519" xpath="//block[@prod-id='page2-col2-left']/block[1]/@left-offset"/>
+      <eval expected="5669" xpath="//block[@prod-id='page2-col2-right']/block[1]/@left-offset"/>
+      <eval expected="-6519" xpath="//block[@prod-id='page2-col2-start']/block[1]/@left-offset"/>
+      <eval expected="5669" xpath="//block[@prod-id='page2-col2-end']/block[1]/@left-offset"/>
+      <eval expected="-6519" xpath="//block[@prod-id='page2-col2-inside']/block[1]/@left-offset"/>
+      <eval expected="-5669" xpath="//block[@prod-id='page2-col2-outside']/block[1]/@left-offset"/>
+
+      <eval expected="-5669" xpath="//block[@prod-id='page3-col1-alternate']/block[1]/@left-offset"/>
+      <eval expected="-5669" xpath="//block[@prod-id='page3-col2-alternate']/block[1]/@left-offset"/>
+   </checks>
+</testcase>

Propchange: xmlgraphics/fop/branches/Temp_ChangeBars2/fop/test/layoutengine/standard-testcases/change-bar_placement-rtl.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: xmlgraphics/fop/branches/Temp_ChangeBars2/fop/test/layoutengine/standard-testcases/change-bar_placement.xml
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_ChangeBars2/fop/test/layoutengine/standard-testcases/change-bar_placement.xml?rev=1835125&view=auto
==============================================================================
--- xmlgraphics/fop/branches/Temp_ChangeBars2/fop/test/layoutengine/standard-testcases/change-bar_placement.xml (added)
+++ xmlgraphics/fop/branches/Temp_ChangeBars2/fop/test/layoutengine/standard-testcases/change-bar_placement.xml Thu Jul  5 11:29:01 2018
@@ -0,0 +1,226 @@
+<?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 fo:change-bar-start placement.</p>
+   </info>
+   <fo>
+      <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
+         <fo:layout-master-set>
+            <fo:simple-page-master page-height="145mm" page-width="210mm" margin="10mm"
+               master-name="master">
+               <fo:region-body column-count="2" column-gap="10mm"/>
+            </fo:simple-page-master>
+         </fo:layout-master-set>
+         <fo:page-sequence master-reference="master">
+            <fo:flow flow-name="xsl-region-body">
+
+               <fo:block change-bar-style="solid" change-bar-color="red" change-bar-offset="2mm"
+                  change-bar-width="0.3mm">
+
+                  <fo:change-bar-begin change-bar-class="left" change-bar-placement="left"/>
+                  <fo:block id="page1-col1-left">Lorem ipsum dolor sit amet, consectetur adipiscing
+                     elit, sed do eiusmod tempor incididunt ut labore et dolore magna
+                     aliqua.</fo:block>
+                  <fo:change-bar-end change-bar-class="left"/>
+
+                  <fo:change-bar-begin change-bar-class="right" change-bar-placement="right"/>
+                  <fo:block id="page1-col1-right">Lorem ipsum dolor sit amet, consectetur adipiscing
+                     elit, sed do eiusmod tempor incididunt ut labore et dolore magna
+                     aliqua.</fo:block>
+                  <fo:change-bar-end change-bar-class="right"/>
+
+                  <fo:change-bar-begin change-bar-class="start" change-bar-placement="start"/>
+                  <fo:block id="page1-col1-start">Lorem ipsum dolor sit amet, consectetur adipiscing
+                     elit, sed do eiusmod tempor incididunt ut labore et dolore magna
+                     aliqua.</fo:block>
+                  <fo:change-bar-end change-bar-class="start"/>
+
+                  <fo:change-bar-begin change-bar-class="end" change-bar-placement="end"/>
+                  <fo:block id="page1-col1-end">Lorem ipsum dolor sit amet, consectetur adipiscing
+                     elit, sed do eiusmod tempor incididunt ut labore et dolore magna
+                     aliqua.</fo:block>
+                  <fo:change-bar-end change-bar-class="end"/>
+
+                  <fo:change-bar-begin change-bar-class="inside" change-bar-placement="inside"/>
+                  <fo:block id="page1-col1-inside">Lorem ipsum dolor sit amet, consectetur
+                     adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna
+                     aliqua.</fo:block>
+                  <fo:change-bar-end change-bar-class="inside"/>
+
+                  <fo:change-bar-begin change-bar-class="outside" change-bar-placement="outside"/>
+                  <fo:block id="page1-col1-outside">Lorem ipsum dolor sit amet, consectetur
+                     adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna
+                     aliqua.</fo:block>
+                  <fo:change-bar-end change-bar-class="outside"/>
+
+                  <fo:change-bar-begin change-bar-class="left" change-bar-placement="left"/>
+                  <fo:block id="page1-col2-left">Lorem ipsum dolor sit amet, consectetur adipiscing
+                     elit, sed do eiusmod tempor incididunt ut labore et dolore magna
+                     aliqua.</fo:block>
+                  <fo:change-bar-end change-bar-class="left"/>
+
+                  <fo:change-bar-begin change-bar-class="right" change-bar-placement="right"/>
+                  <fo:block id="page1-col2-right">Lorem ipsum dolor sit amet, consectetur adipiscing
+                     elit, sed do eiusmod tempor incididunt ut labore et dolore magna
+                     aliqua.</fo:block>
+                  <fo:change-bar-end change-bar-class="right"/>
+
+                  <fo:change-bar-begin change-bar-class="start" change-bar-placement="start"/>
+                  <fo:block id="page1-col2-start">Lorem ipsum dolor sit amet, consectetur adipiscing
+                     elit, sed do eiusmod tempor incididunt ut labore et dolore magna
+                     aliqua.</fo:block>
+                  <fo:change-bar-end change-bar-class="start"/>
+
+                  <fo:change-bar-begin change-bar-class="end" change-bar-placement="end"/>
+                  <fo:block id="page1-col2-end">Lorem ipsum dolor sit amet, consectetur adipiscing
+                     elit, sed do eiusmod tempor incididunt ut labore et dolore magna
+                     aliqua.</fo:block>
+                  <fo:change-bar-end change-bar-class="end"/>
+
+                  <fo:change-bar-begin change-bar-class="inside" change-bar-placement="inside"/>
+                  <fo:block id="page1-col2-inside">Lorem ipsum dolor sit amet, consectetur
+                     adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna
+                     aliqua.</fo:block>
+                  <fo:change-bar-end change-bar-class="inside"/>
+
+                  <fo:change-bar-begin change-bar-class="outside" change-bar-placement="outside"/>
+                  <fo:block id="page1-col2-outside">Lorem ipsum dolor sit amet, consectetur
+                     adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna
+                     aliqua.</fo:block>
+                  <fo:change-bar-end change-bar-class="outside"/>
+
+                  <fo:change-bar-begin change-bar-class="left" change-bar-placement="left"/>
+                  <fo:block id="page2-col1-left">Lorem ipsum dolor sit amet, consectetur adipiscing
+                     elit, sed do eiusmod tempor incididunt ut labore et dolore magna
+                     aliqua.</fo:block>
+                  <fo:change-bar-end change-bar-class="left"/>
+
+                  <fo:change-bar-begin change-bar-class="right" change-bar-placement="right"/>
+                  <fo:block id="page2-col1-right">Lorem ipsum dolor sit amet, consectetur adipiscing
+                     elit, sed do eiusmod tempor incididunt ut labore et dolore magna
+                     aliqua.</fo:block>
+                  <fo:change-bar-end change-bar-class="right"/>
+
+                  <fo:change-bar-begin change-bar-class="start" change-bar-placement="start"/>
+                  <fo:block id="page2-col1-start">Lorem ipsum dolor sit amet, consectetur adipiscing
+                     elit, sed do eiusmod tempor incididunt ut labore et dolore magna
+                     aliqua.</fo:block>
+                  <fo:change-bar-end change-bar-class="start"/>
+
+                  <fo:change-bar-begin change-bar-class="end" change-bar-placement="end"/>
+                  <fo:block id="page2-col1-end">Lorem ipsum dolor sit amet, consectetur adipiscing
+                     elit, sed do eiusmod tempor incididunt ut labore et dolore magna
+                     aliqua.</fo:block>
+                  <fo:change-bar-end change-bar-class="end"/>
+
+                  <fo:change-bar-begin change-bar-class="inside" change-bar-placement="inside"/>
+                  <fo:block id="page2-col1-inside">Lorem ipsum dolor sit amet, consectetur
+                     adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna
+                     aliqua.</fo:block>
+                  <fo:change-bar-end change-bar-class="inside"/>
+
+                  <fo:change-bar-begin change-bar-class="outside" change-bar-placement="outside"/>
+                  <fo:block id="page2-col1-outside">Lorem ipsum dolor sit amet, consectetur
+                     adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna
+                     aliqua.</fo:block>
+                  <fo:change-bar-end change-bar-class="outside"/>
+
+                  <fo:change-bar-begin change-bar-class="left" change-bar-placement="left"/>
+                  <fo:block id="page2-col2-left">Lorem ipsum dolor sit amet, consectetur adipiscing
+                     elit, sed do eiusmod tempor incididunt ut labore et dolore magna
+                     aliqua.</fo:block>
+                  <fo:change-bar-end change-bar-class="left"/>
+
+                  <fo:change-bar-begin change-bar-class="right" change-bar-placement="right"/>
+                  <fo:block id="page2-col2-right">Lorem ipsum dolor sit amet, consectetur adipiscing
+                     elit, sed do eiusmod tempor incididunt ut labore et dolore magna
+                     aliqua.</fo:block>
+                  <fo:change-bar-end change-bar-class="right"/>
+
+                  <fo:change-bar-begin change-bar-class="start" change-bar-placement="start"/>
+                  <fo:block id="page2-col2-start">Lorem ipsum dolor sit amet, consectetur adipiscing
+                     elit, sed do eiusmod tempor incididunt ut labore et dolore magna
+                     aliqua.</fo:block>
+                  <fo:change-bar-end change-bar-class="start"/>
+
+                  <fo:change-bar-begin change-bar-class="end" change-bar-placement="end"/>
+                  <fo:block id="page2-col2-end">Lorem ipsum dolor sit amet, consectetur adipiscing
+                     elit, sed do eiusmod tempor incididunt ut labore et dolore magna
+                     aliqua.</fo:block>
+                  <fo:change-bar-end change-bar-class="end"/>
+
+                  <fo:change-bar-begin change-bar-class="inside" change-bar-placement="inside"/>
+                  <fo:block id="page2-col2-inside">Lorem ipsum dolor sit amet, consectetur
+                     adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna
+                     aliqua.</fo:block>
+                  <fo:change-bar-end change-bar-class="inside"/>
+
+                  <fo:change-bar-begin change-bar-class="outside" change-bar-placement="outside"/>
+                  <fo:block id="page2-col2-outside">Lorem ipsum dolor sit amet, consectetur
+                     adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna
+                     aliqua.</fo:block>
+                  <fo:change-bar-end change-bar-class="outside"/>
+
+                  <fo:change-bar-begin change-bar-class="alternate" change-bar-placement="alternate"/>
+                  <fo:block id="page3-col1-alternate">Lorem ipsum dolor sit amet, consectetur
+                     adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna
+                     aliqua.</fo:block>
+                  <fo:block id="page3-col2-alternate" break-before="column">Lorem ipsum dolor sit
+                     amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore
+                     et dolore magna aliqua.</fo:block>
+                  <fo:change-bar-end change-bar-class="alternate"/>
+               </fo:block>
+            </fo:flow>
+         </fo:page-sequence>
+      </fo:root>
+   </fo>
+   <checks>
+      <eval expected="-6519" xpath="//block[@prod-id='page1-col1-left']/block[1]/@left-offset"/>
+      <eval expected="5669" xpath="//block[@prod-id='page1-col1-right']/block[1]/@left-offset"/>
+      <eval expected="-6519" xpath="//block[@prod-id='page1-col1-start']/block[1]/@left-offset"/>
+      <eval expected="5669" xpath="//block[@prod-id='page1-col1-end']/block[1]/@left-offset"/>
+      <eval expected="-6519" xpath="//block[@prod-id='page1-col1-inside']/block[1]/@left-offset"/>
+      <eval expected="-5669" xpath="//block[@prod-id='page1-col1-outside']/block[1]/@left-offset"/>
+
+      <eval expected="-6519" xpath="//block[@prod-id='page1-col2-left']/block[1]/@left-offset"/>
+      <eval expected="5669" xpath="//block[@prod-id='page1-col2-right']/block[1]/@left-offset"/>
+      <eval expected="-6519" xpath="//block[@prod-id='page1-col2-start']/block[1]/@left-offset"/>
+      <eval expected="5669" xpath="//block[@prod-id='page1-col2-end']/block[1]/@left-offset"/>
+      <eval expected="-6519" xpath="//block[@prod-id='page1-col2-inside']/block[1]/@left-offset"/>
+      <eval expected="-5669" xpath="//block[@prod-id='page1-col2-outside']/block[1]/@left-offset"/>
+
+      <eval expected="-6519" xpath="//block[@prod-id='page2-col1-left']/block[1]/@left-offset"/>
+      <eval expected="5669" xpath="//block[@prod-id='page2-col1-right']/block[1]/@left-offset"/>
+      <eval expected="-6519" xpath="//block[@prod-id='page2-col1-start']/block[1]/@left-offset"/>
+      <eval expected="5669" xpath="//block[@prod-id='page2-col1-end']/block[1]/@left-offset"/>
+      <eval expected="-6519" xpath="//block[@prod-id='page2-col1-inside']/block[1]/@left-offset"/>
+      <eval expected="-5669" xpath="//block[@prod-id='page2-col1-outside']/block[1]/@left-offset"/>
+
+      <eval expected="-6519" xpath="//block[@prod-id='page2-col2-left']/block[1]/@left-offset"/>
+      <eval expected="5669" xpath="//block[@prod-id='page2-col2-right']/block[1]/@left-offset"/>
+      <eval expected="-6519" xpath="//block[@prod-id='page2-col2-start']/block[1]/@left-offset"/>
+      <eval expected="5669" xpath="//block[@prod-id='page2-col2-end']/block[1]/@left-offset"/>
+      <eval expected="-6519" xpath="//block[@prod-id='page2-col2-inside']/block[1]/@left-offset"/>
+      <eval expected="-5669" xpath="//block[@prod-id='page2-col2-outside']/block[1]/@left-offset"/>
+
+      <eval expected="-5669" xpath="//block[@prod-id='page3-col1-alternate']/block[1]/@left-offset"/>
+      <eval expected="-5669" xpath="//block[@prod-id='page3-col2-alternate']/block[1]/@left-offset"/>
+   </checks>
+</testcase>

Propchange: xmlgraphics/fop/branches/Temp_ChangeBars2/fop/test/layoutengine/standard-testcases/change-bar_placement.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: xmlgraphics/fop/branches/Temp_ChangeBars2/fop/test/layoutengine/standard-testcases/change-bar_style.xml
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_ChangeBars2/fop/test/layoutengine/standard-testcases/change-bar_style.xml?rev=1835125&view=auto
==============================================================================
--- xmlgraphics/fop/branches/Temp_ChangeBars2/fop/test/layoutengine/standard-testcases/change-bar_style.xml (added)
+++ xmlgraphics/fop/branches/Temp_ChangeBars2/fop/test/layoutengine/standard-testcases/change-bar_style.xml Thu Jul  5 11:29:01 2018
@@ -0,0 +1,102 @@
+<?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 fo:change-bar-start style.</p>
+   </info>
+   <fo>
+      <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
+         <fo:layout-master-set>
+            <fo:simple-page-master page-height="145mm" page-width="210mm" margin="10mm"
+               master-name="master">
+               <fo:region-body column-count="2" column-gap="10mm"/>
+            </fo:simple-page-master>
+         </fo:layout-master-set>
+         <fo:page-sequence master-reference="master">
+            <fo:flow flow-name="xsl-region-body">
+
+               <fo:block change-bar-color="red" change-bar-offset="2mm" change-bar-width="1mm">
+
+                  <fo:change-bar-begin change-bar-class="none" change-bar-style="none"/>
+                  <fo:block id="none">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed
+                     do eiusmod tempor incididunt ut labore et dolore magna aliqua.</fo:block>
+                  <fo:change-bar-end change-bar-class="none"/>
+
+                  <fo:change-bar-begin change-bar-class="hidden" change-bar-style="hidden"/>
+                  <fo:block id="hidden">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed
+                     do eiusmod tempor incididunt ut labore et dolore magna aliqua.</fo:block>
+                  <fo:change-bar-end change-bar-class="hidden"/>
+
+                  <fo:change-bar-begin change-bar-class="dotted" change-bar-style="dotted"/>
+                  <fo:block id="dotted">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed
+                     do eiusmod tempor incididunt ut labore et dolore magna aliqua.</fo:block>
+                  <fo:change-bar-end change-bar-class="dotted"/>
+
+                  <fo:change-bar-begin change-bar-class="dashed" change-bar-style="dashed"/>
+                  <fo:block id="dashed">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed
+                     do eiusmod tempor incididunt ut labore et dolore magna aliqua.</fo:block>
+                  <fo:change-bar-end change-bar-class="dashed"/>
+
+                  <fo:change-bar-begin change-bar-class="solid" change-bar-style="solid"/>
+                  <fo:block id="solid">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed
+                     do eiusmod tempor incididunt ut labore et dolore magna aliqua.</fo:block>
+                  <fo:change-bar-end change-bar-class="solid"/>
+
+                  <fo:change-bar-begin change-bar-class="double" change-bar-style="double"/>
+                  <fo:block id="double">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed
+                     do eiusmod tempor incididunt ut labore et dolore magna aliqua.</fo:block>
+                  <fo:change-bar-end change-bar-class="double"/>
+
+                  <fo:change-bar-begin change-bar-class="groove" change-bar-style="groove"/>
+                  <fo:block id="groove">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed
+                     do eiusmod tempor incididunt ut labore et dolore magna aliqua.</fo:block>
+                  <fo:change-bar-end change-bar-class="groove"/>
+
+                  <fo:change-bar-begin change-bar-class="ridge" change-bar-style="ridge"/>
+                  <fo:block id="ridge">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed
+                     do eiusmod tempor incididunt ut labore et dolore magna aliqua.</fo:block>
+                  <fo:change-bar-end change-bar-class="ridge"/>
+
+                  <fo:change-bar-begin change-bar-class="inset" change-bar-style="inset"/>
+                  <fo:block id="inset">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed
+                     do eiusmod tempor incididunt ut labore et dolore magna aliqua.</fo:block>
+                  <fo:change-bar-end change-bar-class="inset"/>
+
+                  <fo:change-bar-begin change-bar-class="outset" change-bar-style="outset"/>
+                  <fo:block id="outset">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed
+                     do eiusmod tempor incididunt ut labore et dolore magna aliqua.</fo:block>
+                  <fo:change-bar-end change-bar-class="outset"/>
+               </fo:block>
+            </fo:flow>
+         </fo:page-sequence>
+      </fo:root>
+   </fo>
+   <checks>
+      <eval expected="(none,#ff0000,2834)" xpath="//block[@prod-id='none']/block[1]/@border-start"/>
+      <eval expected="(hidden,#ff0000,2834)" xpath="//block[@prod-id='hidden']/block[1]/@border-start"/>
+      <eval expected="(dotted,#ff0000,2834)" xpath="//block[@prod-id='dotted']/block[1]/@border-start"/>
+      <eval expected="(dashed,#ff0000,2834)" xpath="//block[@prod-id='dashed']/block[1]/@border-start"/>
+      <eval expected="(solid,#ff0000,2834)" xpath="//block[@prod-id='solid']/block[1]/@border-start"/>
+      <eval expected="(double,#ff0000,2834)" xpath="//block[@prod-id='double']/block[1]/@border-start"/>
+      <eval expected="(groove,#ff0000,2834)" xpath="//block[@prod-id='groove']/block[1]/@border-start"/>
+      <eval expected="(ridge,#ff0000,2834)" xpath="//block[@prod-id='ridge']/block[1]/@border-start"/>
+      <eval expected="(inset,#ff0000,2834)" xpath="//block[@prod-id='inset']/block[1]/@border-start"/>
+      <eval expected="(outset,#ff0000,2834)" xpath="//block[@prod-id='outset']/block[1]/@border-start"/>
+   </checks>
+</testcase>

Propchange: xmlgraphics/fop/branches/Temp_ChangeBars2/fop/test/layoutengine/standard-testcases/change-bar_style.xml
------------------------------------------------------------------------------
    svn:eol-style = native



---------------------------------------------------------------------
To unsubscribe, e-mail: fop-commits-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-commits-help@xmlgraphics.apache.org