aboutsummaryrefslogtreecommitdiffstats
path: root/src/java/org
diff options
context:
space:
mode:
authorAndreas L. Delmelle <adelmelle@apache.org>2005-09-21 16:25:57 +0000
committerAndreas L. Delmelle <adelmelle@apache.org>2005-09-21 16:25:57 +0000
commit1654c995b25b0cc66cf4f51f10335ca733d4f8de (patch)
tree6d6ca94568b90e24df8a74eb0c4b751b26a52e13 /src/java/org
parent2f44b9b04e42aed5704a545bf99fbbac2595749b (diff)
downloadxmlgraphics-fop-1654c995b25b0cc66cf4f51f10335ca733d4f8de.tar.gz
xmlgraphics-fop-1654c995b25b0cc66cf4f51f10335ca733d4f8de.zip
Added fallback for specified negative or zero for column-number
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@290736 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src/java/org')
-rw-r--r--src/java/org/apache/fop/fo/flow/TableColumn.java11
-rw-r--r--src/java/org/apache/fop/fo/properties/ColumnNumberPropertyMaker.java32
2 files changed, 34 insertions, 9 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;
+ }
}