]> source.dussan.org Git - xmlgraphics-fop.git/commitdiff
FOP-2707: fix wrong bidi level, when creating new spans
authorMatthias Reischenbacher <matthias@apache.org>
Wed, 24 May 2017 21:33:32 +0000 (21:33 +0000)
committerMatthias Reischenbacher <matthias@apache.org>
Wed, 24 May 2017 21:33:32 +0000 (21:33 +0000)
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@1796102 13f79535-47bb-0310-9956-ffa450edef68

fop-core/src/main/java/org/apache/fop/area/MainReference.java
fop/test/layoutengine/standard-testcases/region-body_column-count_span_writing-mode_rl.xml [new file with mode: 0644]

index 9778db87ff01000e9b503766db5056d067a635fe..c3d5534293890c31b16b142a3fe345c6f4a8ac55 100644 (file)
@@ -37,6 +37,7 @@ public class MainReference extends Area {
     private BodyRegion parent;
     private List<Span> spanAreas = new java.util.ArrayList<Span>();
     private boolean isEmpty = true;
+    private WritingModeTraitsGetter wmtg;
 
     /**
      * Constructor
@@ -62,6 +63,9 @@ public class MainReference extends Area {
         Span newSpan = new Span(((spanAll) ? 1 : getColumnCount()),
                 getColumnGap(), parent.getContentIPD());
         spanAreas.add(newSpan);
+        if (wmtg != null) {
+            newSpan.setWritingModeTraits(wmtg);
+        }
         return getCurrentSpan();
     }
 
@@ -127,6 +131,7 @@ public class MainReference extends Area {
      * @param wmtg a WM traits getter
      */
     public void setWritingModeTraits(WritingModeTraitsGetter wmtg) {
+        this.wmtg = wmtg;
         for (Span s : getSpans()) {
             s.setWritingModeTraits(wmtg);
         }
diff --git a/fop/test/layoutengine/standard-testcases/region-body_column-count_span_writing-mode_rl.xml b/fop/test/layoutengine/standard-testcases/region-body_column-count_span_writing-mode_rl.xml
new file mode 100644 (file)
index 0000000..4b9f0cd
--- /dev/null
@@ -0,0 +1,47 @@
+<?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 multi-column documents with right-to-left writing mode. Normal multi-column document breaking over more than one page.
+    </p>
+  </info>
+  <fo>
+    <fo:root 
+  xmlns:fo="http://www.w3.org/1999/XSL/Format" writing-mode="rl-tb">
+      <fo:layout-master-set>
+        <fo:simple-page-master margin="20mm" master-name="odd" page-height="148mm" page-width="210mm">
+          <fo:region-body column-count="3"/>
+        </fo:simple-page-master>
+      </fo:layout-master-set>
+      <fo:page-sequence master-reference="odd" writing-mode="rl-tb">
+        <fo:flow flow-name="xsl-region-body">
+          <fo:block span="all">Spanned Block</fo:block>
+          <fo:block>Col1</fo:block>
+          <fo:block break-before="column">Col2</fo:block>
+          <fo:block break-before="column">Col3</fo:block>
+        </fo:flow>
+      </fo:page-sequence>
+    </fo:root>
+  </fo>
+  <checks>
+    <eval expected="1" xpath="//pageViewport[@nr=1]/page/regionViewport/regionBody/mainReference/span[1]/@level"/>
+    <eval expected="1" xpath="//pageViewport[@nr=1]/page/regionViewport/regionBody/mainReference/span[2]/@level"/>
+  </checks>
+</testcase>