diff options
author | Andreas L. Delmelle <adelmelle@apache.org> | 2005-09-21 16:25:57 +0000 |
---|---|---|
committer | Andreas L. Delmelle <adelmelle@apache.org> | 2005-09-21 16:25:57 +0000 |
commit | 1654c995b25b0cc66cf4f51f10335ca733d4f8de (patch) | |
tree | 6d6ca94568b90e24df8a74eb0c4b751b26a52e13 /src/java/org | |
parent | 2f44b9b04e42aed5704a545bf99fbbac2595749b (diff) | |
download | xmlgraphics-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.java | 11 | ||||
-rw-r--r-- | src/java/org/apache/fop/fo/properties/ColumnNumberPropertyMaker.java | 32 |
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; + } } |