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 ad...@apache.org on 2005/09/21 18:26:09 UTC

svn commit: r290736 - in /xmlgraphics/fop/trunk: src/java/org/apache/fop/fo/flow/ src/java/org/apache/fop/fo/properties/ test/fotree/testcases/

Author: adelmelle
Date: Wed Sep 21 09:25:57 2005
New Revision: 290736

URL: http://svn.apache.org/viewcvs?rev=290736&view=rev
Log:
Added fallback for specified negative or zero for column-number

Added:
    xmlgraphics/fop/trunk/test/fotree/testcases/column-number_negative-or-zero.fo
Modified:
    xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/flow/TableColumn.java
    xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/properties/ColumnNumberPropertyMaker.java
    xmlgraphics/fop/trunk/test/fotree/testcases/column-number_cells_body.fo
    xmlgraphics/fop/trunk/test/fotree/testcases/column-number_cells_body2.fo
    xmlgraphics/fop/trunk/test/fotree/testcases/column-number_cells_out-of-order.fo
    xmlgraphics/fop/trunk/test/fotree/testcases/column-number_cells_rows.fo
    xmlgraphics/fop/trunk/test/fotree/testcases/column-number_columns_special.fo

Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/flow/TableColumn.java
URL: http://svn.apache.org/viewcvs/xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/flow/TableColumn.java?rev=290736&r1=290735&r2=290736&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/flow/TableColumn.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/flow/TableColumn.java Wed Sep 21 09:25:57 2005
@@ -76,15 +76,8 @@
         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 {

Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/properties/ColumnNumberPropertyMaker.java
URL: http://svn.apache.org/viewcvs/xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/properties/ColumnNumberPropertyMaker.java?rev=290736&r1=290735&r2=290736&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/properties/ColumnNumberPropertyMaker.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/properties/ColumnNumberPropertyMaker.java Wed Sep 21 09:25:57 2005
@@ -25,6 +25,11 @@
 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) {
@@ -66,5 +71,32 @@
                     + " on fo:table-cell or fo:table-column, not on "
                     + 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;
     }
 }

Modified: xmlgraphics/fop/trunk/test/fotree/testcases/column-number_cells_body.fo
URL: http://svn.apache.org/viewcvs/xmlgraphics/fop/trunk/test/fotree/testcases/column-number_cells_body.fo?rev=290736&r1=290735&r2=290736&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/test/fotree/testcases/column-number_cells_body.fo (original)
+++ xmlgraphics/fop/trunk/test/fotree/testcases/column-number_cells_body.fo Wed Sep 21 09:25:57 2005
@@ -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>

Modified: xmlgraphics/fop/trunk/test/fotree/testcases/column-number_cells_body2.fo
URL: http://svn.apache.org/viewcvs/xmlgraphics/fop/trunk/test/fotree/testcases/column-number_cells_body2.fo?rev=290736&r1=290735&r2=290736&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/test/fotree/testcases/column-number_cells_body2.fo (original)
+++ xmlgraphics/fop/trunk/test/fotree/testcases/column-number_cells_body2.fo Wed Sep 21 09:25:57 2005
@@ -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>
@@ -57,6 +57,10 @@
           <fo:table-cell>
             <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" />

Modified: xmlgraphics/fop/trunk/test/fotree/testcases/column-number_cells_out-of-order.fo
URL: http://svn.apache.org/viewcvs/xmlgraphics/fop/trunk/test/fotree/testcases/column-number_cells_out-of-order.fo?rev=290736&r1=290735&r2=290736&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/test/fotree/testcases/column-number_cells_out-of-order.fo (original)
+++ xmlgraphics/fop/trunk/test/fotree/testcases/column-number_cells_out-of-order.fo Wed Sep 21 09:25:57 2005
@@ -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>

Modified: xmlgraphics/fop/trunk/test/fotree/testcases/column-number_cells_rows.fo
URL: http://svn.apache.org/viewcvs/xmlgraphics/fop/trunk/test/fotree/testcases/column-number_cells_rows.fo?rev=290736&r1=290735&r2=290736&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/test/fotree/testcases/column-number_cells_rows.fo (original)
+++ xmlgraphics/fop/trunk/test/fotree/testcases/column-number_cells_rows.fo Wed Sep 21 09:25:57 2005
@@ -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>

Modified: xmlgraphics/fop/trunk/test/fotree/testcases/column-number_columns_special.fo
URL: http://svn.apache.org/viewcvs/xmlgraphics/fop/trunk/test/fotree/testcases/column-number_columns_special.fo?rev=290736&r1=290735&r2=290736&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/test/fotree/testcases/column-number_columns_special.fo (original)
+++ xmlgraphics/fop/trunk/test/fotree/testcases/column-number_columns_special.fo Wed Sep 21 09:25:57 2005
@@ -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>

Added: xmlgraphics/fop/trunk/test/fotree/testcases/column-number_negative-or-zero.fo
URL: http://svn.apache.org/viewcvs/xmlgraphics/fop/trunk/test/fotree/testcases/column-number_negative-or-zero.fo?rev=290736&view=auto
==============================================================================
--- xmlgraphics/fop/trunk/test/fotree/testcases/column-number_negative-or-zero.fo (added)
+++ xmlgraphics/fop/trunk/test/fotree/testcases/column-number_negative-or-zero.fo Wed Sep 21 09:25:57 2005
@@ -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>
+



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


Re: svn commit: r290736...

Posted by Andreas L Delmelle <a_...@pandora.be>.
On Sep 21, 2005, at 18:26, adelmelle@apache.org wrote:

A question for Finn, I presume...

> Author: adelmelle
> Date: Wed Sep 21 09:25:57 2005
> New Revision: 290736
>
> URL: http://svn.apache.org/viewcvs?rev=290736&view=rev
> Log:
> Added fallback for specified negative or zero for column-number

As you see, only now --*after* writing an implementation for the 
initial values of column-numbers-- do I seem to understand the wonders 
of our Property system.

IYO, would it be cleaner to move the logic that is currently contained 
in Table.addCellNode(), TableBody.addCellNode(), 
TableRow.addChildNode() to the Maker's get() method?

I mean: let the PropertyMaker take care of:
- updating the Table/TableBody/TableRow columnIndex
- throwing an Exception if the column-number is already in use (overlap)
etc.

I'm beginning to think that my implementation, although it works like a 
charm in well above 90% of the cases, has put the right code in the 
wrong places...


Cheers,

Andreas