aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/java/org/apache/fop/fo/flow/TableColumn.java11
-rw-r--r--src/java/org/apache/fop/fo/properties/ColumnNumberPropertyMaker.java32
-rw-r--r--test/fotree/testcases/column-number_cells_body.fo2
-rw-r--r--test/fotree/testcases/column-number_cells_body2.fo6
-rw-r--r--test/fotree/testcases/column-number_cells_out-of-order.fo2
-rw-r--r--test/fotree/testcases/column-number_cells_rows.fo2
-rw-r--r--test/fotree/testcases/column-number_columns_special.fo2
-rw-r--r--test/fotree/testcases/column-number_negative-or-zero.fo53
8 files changed, 96 insertions, 14 deletions
diff --git a/src/java/org/apache/fop/fo/flow/TableColumn.java b/src/java/org/apache/fop/fo/flow/TableColumn.java
index c7b7eab6f..55b68a568 100644
--- a/src/java/org/apache/fop/fo/flow/TableColumn.java
+++ b/src/java/org/apache/fop/fo/flow/TableColumn.java
@@ -76,15 +76,8 @@ public class TableColumn extends TableFObj {
super.bind(pList);
if (pList.getExplicit(PR_COLUMN_NUMBER) != null) {
- if (columnNumber.getValue() <= 0) {
- //TODO: This is actually a non-fatal error. See Rec 7.26.8:
- //"A positive integer. If a negative or non-integer value
- // is provided, the value will be rounded to the
- // nearest integer value greater than or equal to 1."
- throw new PropertyException("column-number must be 1 or bigger, "
- + "but got " + columnNumber);
- } else if (getTable().isColumnNumberUsed(columnNumber.getValue())) {
- throw new PropertyException("specified column-number \""
+ if (getTable().isColumnNumberUsed(columnNumber.getValue())) {
+ throw new PropertyException("Specified column-number \""
+ columnNumber
+ "\" has already been assigned to a previous column");
} else {
diff --git a/src/java/org/apache/fop/fo/properties/ColumnNumberPropertyMaker.java b/src/java/org/apache/fop/fo/properties/ColumnNumberPropertyMaker.java
index 36742014e..46e87c2c6 100644
--- a/src/java/org/apache/fop/fo/properties/ColumnNumberPropertyMaker.java
+++ b/src/java/org/apache/fop/fo/properties/ColumnNumberPropertyMaker.java
@@ -25,6 +25,11 @@ import org.apache.fop.fo.expr.PropertyException;
import org.apache.fop.fo.flow.TableFObj;
import org.apache.fop.fo.flow.TableBody;
+/**
+ * Maker class for the column-number property on table-cells and
+ * table-columns
+ *
+ */
public class ColumnNumberPropertyMaker extends NumberProperty.Maker {
public ColumnNumberPropertyMaker(int propId) {
@@ -67,4 +72,31 @@ public class ColumnNumberPropertyMaker extends NumberProperty.Maker {
+ fo.getName());
}
}
+
+ /**
+ * Check the value of the column-number property.
+ * Return the parent's column index (initial value) in case
+ * of a negative or zero value
+ *
+ * @see org.apache.fop.fo.properties.PropertyMaker#get(int, PropertyList, boolean, boolean)
+ */
+ public Property get(int subpropId, PropertyList propertyList,
+ boolean tryInherit, boolean tryDefault)
+ throws PropertyException {
+
+ Property p = super.get(0, propertyList, tryInherit, tryDefault);
+ FObj fo = propertyList.getFObj();
+
+ if (p.getNumeric().getValue() <= 0) {
+ TableFObj parent = (TableFObj) propertyList.getParentFObj();
+ int columnIndex = parent.getCurrentColumnIndex();
+ fo.getLogger().warn("Specified negative or zero value for "
+ + "column-number on " + fo.getName() + ": "
+ + p.getNumeric().getValue() + " forced to "
+ + columnIndex);
+ return new NumberProperty(columnIndex);
+ }
+ //TODO: check for non-integer value and round
+ return p;
+ }
}
diff --git a/test/fotree/testcases/column-number_cells_body.fo b/test/fotree/testcases/column-number_cells_body.fo
index 4d9de6672..f6012f838 100644
--- a/test/fotree/testcases/column-number_cells_body.fo
+++ b/test/fotree/testcases/column-number_cells_body.fo
@@ -14,7 +14,7 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-<!-- $Id: $ -->
+<!-- $Id:$ -->
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"
xmlns:test="http://xmlgraphics.apache.org/fop/test">
<fo:layout-master-set>
diff --git a/test/fotree/testcases/column-number_cells_body2.fo b/test/fotree/testcases/column-number_cells_body2.fo
index 3b5d0617a..4bd71fe7d 100644
--- a/test/fotree/testcases/column-number_cells_body2.fo
+++ b/test/fotree/testcases/column-number_cells_body2.fo
@@ -14,7 +14,7 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-<!-- $Id: $ -->
+<!-- $Id:$ -->
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"
xmlns:test="http://xmlgraphics.apache.org/fop/test">
<fo:layout-master-set>
@@ -58,6 +58,10 @@
<test:assert property="column-number" expected="5" />
<fo:block>cell5</fo:block>
</fo:table-cell>
+ <fo:table-cell>
+ <test:assert property="column-number" expected="6" />
+ <fo:block>cell5b</fo:block>
+ </fo:table-cell>
<fo:table-cell starts-row="true">
<test:assert property="column-number" expected="1" />
<fo:block>cell6</fo:block>
diff --git a/test/fotree/testcases/column-number_cells_out-of-order.fo b/test/fotree/testcases/column-number_cells_out-of-order.fo
index 841d71f7b..39ecd2a5d 100644
--- a/test/fotree/testcases/column-number_cells_out-of-order.fo
+++ b/test/fotree/testcases/column-number_cells_out-of-order.fo
@@ -14,7 +14,7 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-<!-- $Id: $ -->
+<!-- $Id:$ -->
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"
xmlns:test="http://xmlgraphics.apache.org/fop/test">
<fo:layout-master-set>
diff --git a/test/fotree/testcases/column-number_cells_rows.fo b/test/fotree/testcases/column-number_cells_rows.fo
index 62b3b620f..ad453b3cd 100644
--- a/test/fotree/testcases/column-number_cells_rows.fo
+++ b/test/fotree/testcases/column-number_cells_rows.fo
@@ -14,7 +14,7 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-<!-- $Id: $ -->
+<!-- $Id:$ -->
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"
xmlns:test="http://xmlgraphics.apache.org/fop/test">
<fo:layout-master-set>
diff --git a/test/fotree/testcases/column-number_columns_special.fo b/test/fotree/testcases/column-number_columns_special.fo
index 7787b9d91..035864a34 100644
--- a/test/fotree/testcases/column-number_columns_special.fo
+++ b/test/fotree/testcases/column-number_columns_special.fo
@@ -14,7 +14,7 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-<!-- $Id: $ -->
+<!-- $Id:$ -->
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"
xmlns:test="http://xmlgraphics.apache.org/fop/test">
<fo:layout-master-set>
diff --git a/test/fotree/testcases/column-number_negative-or-zero.fo b/test/fotree/testcases/column-number_negative-or-zero.fo
new file mode 100644
index 000000000..98294efb4
--- /dev/null
+++ b/test/fotree/testcases/column-number_negative-or-zero.fo
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<!--
+ Copyright 2005 The Apache Software Foundation
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<!-- $Id:$ -->
+<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ xmlns:test="http://xmlgraphics.apache.org/fop/test">
+ <fo:layout-master-set>
+ <fo:simple-page-master master-name="normal" page-width="5in" page-height="2in"
+ margin="20pt">
+ <fo:region-body />
+ </fo:simple-page-master>
+ </fo:layout-master-set>
+ <fo:page-sequence master-reference="normal">
+ <fo:flow flow-name="xsl-region-body">
+ <!-- testcase for specified negative or zero values -->
+ <fo:table border-collapse="separate" table-layout="fixed" width="7.5in">
+ <fo:table-column column-width="60pt" column-number="0">
+ <test:assert property="column-number" expected="1" />
+ </fo:table-column>
+ <fo:table-column column-width="7in" column-number="-1">
+ <test:assert property="column-number" expected="2" />
+ </fo:table-column>
+ <fo:table-body>
+ <fo:table-row>
+ <fo:table-cell column-number="-3">
+ <test:assert property="column-number" expected="1" />
+ <fo:block>Cell1</fo:block>
+ </fo:table-cell>
+ <fo:table-cell column-number="0">
+ <test:assert property="column-number" expected="2" />
+ <fo:block>Cell2
+ </fo:block>
+ </fo:table-cell>
+ </fo:table-row>
+ </fo:table-body>
+ </fo:table>
+ </fo:flow>
+ </fo:page-sequence>
+</fo:root>
+