]> source.dussan.org Git - xmlgraphics-fop.git/commitdiff
Minor fix: set negative values to zero for b-p-d/i-p-d
authorAndreas L. Delmelle <adelmelle@apache.org>
Mon, 21 Aug 2006 21:59:30 +0000 (21:59 +0000)
committerAndreas L. Delmelle <adelmelle@apache.org>
Mon, 21 Aug 2006 21:59:30 +0000 (21:59 +0000)
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@433385 13f79535-47bb-0310-9956-ffa450edef68

src/java/org/apache/fop/fo/properties/LengthRangeProperty.java
status.xml
test/fotree/disabled-testcases.xml

index 69217a56f43eddae2cfa072825dbc7bb6e3f87cf..84fee1490ab1c77a9cf83a78cc2528a006d6ce1a 100644 (file)
@@ -20,6 +20,7 @@
 package org.apache.fop.fo.properties;
 
 import org.apache.fop.datatypes.CompoundDatatype;
+import org.apache.fop.datatypes.Length;
 import org.apache.fop.datatypes.PercentBaseContext;
 import org.apache.fop.fo.FObj;
 import org.apache.fop.fo.PropertyList;
@@ -61,14 +62,49 @@ public class LengthRangeProperty extends Property implements CompoundDatatype {
         /**
          * @see CompoundPropertyMaker#convertProperty
          */        
-        public Property convertProperty(Property p, PropertyList propertyList, FObj fo)
-            throws PropertyException
-        {
+        public Property convertProperty(Property p, 
+                                PropertyList propertyList, FObj fo)
+                        throws PropertyException {
+            
             if (p instanceof LengthRangeProperty) {
                 return p;
             }
+            
+            if (this.propId == PR_BLOCK_PROGRESSION_DIMENSION
+                    || this.propId == PR_INLINE_PROGRESSION_DIMENSION) {
+                Length len = p.getLength();
+                if (len != null && len.getValue() < 0) {
+                    log.warn("Replaced negative value for " + getName()
+                            + " with 0mpt");
+                    p = new FixedLength(0);
+                }
+            }
+            
             return super.convertProperty(p, propertyList, fo);
         }
+        
+        
+        /**
+         * @see org.apache.fop.fo.properties.PropertyMaker#getSubprop()
+         */
+        protected Property setSubprop(Property baseProperty, int subpropertyId,
+                                        Property subproperty) {
+            CompoundDatatype val = (CompoundDatatype) baseProperty.getObject();
+            if (this.propId == PR_BLOCK_PROGRESSION_DIMENSION
+                    || this.propId == PR_INLINE_PROGRESSION_DIMENSION) {
+                Length len = subproperty.getLength();
+                if (len != null && len.getValue() < 0) {
+                    log.warn("Replaced negative value for " + getName()
+                            + " with 0mpt");
+                    val.setComponent(subpropertyId,
+                            new FixedLength(0), false);
+                    return baseProperty;
+                }
+            }
+            val.setComponent(subpropertyId, subproperty, false);
+            return baseProperty;
+        }
+
     }
 
 
@@ -186,8 +222,9 @@ public class LengthRangeProperty extends Property implements CompoundDatatype {
                 // opt is default and max is explicit or default
                 optimum = maximum;
             }
-        } else if (!optimum.isAuto() && !minimum.isAuto() && 
-                optimum.getLength().getValue(context) < minimum.getLength().getValue(context)) {
+        } else if (!optimum.isAuto() && !minimum.isAuto() 
+                    && optimum.getLength().getValue(context) 
+                        < minimum.getLength().getValue(context)) {
             if ((bfSet & MINSET) != 0) {
                 // if minimum is explicit, force opt to min
                 if ((bfSet & OPTSET) != 0) {
@@ -246,7 +283,7 @@ public class LengthRangeProperty extends Property implements CompoundDatatype {
     /**
      * @return this.lengthRange cast as an Object
      */
-    public Object getObject() {
+    protected Object getObject() {
         return this;
     }
 
index d013359e6c55f6133b724023823dd0d404ea1440..1f84b1963d5930f9148739cfc5369c58b9fab03d 100644 (file)
@@ -28,6 +28,9 @@
 
   <changes>
     <release version="FOP Trunk">
+      <action context="Code" dev="AD" type="update">
+        Minor fix: correctly set negative values to zero.
+      </action>
       <action context="Code" dev="AD" type="update" fixes-bug="35656">
         Rework of default column-creation / column-width setting from
         cells in the first row.
index bcf06566784a7853251f0cbbe64b620d116957fd..0b623b45070eabc578a7e31c35caff9e72ad06bb 100755 (executable)
     <file>demo-test-failure.fo</file>\r
     <description></description>\r
   </testcase>\r
-  <testcase>\r
-    <name>Negative values on block-progression-dimension</name>\r
-    <file>block-progression-dimension_negative.fo</file>\r
-    <description>The code currently doesn't set negative values to 0mpt as mandated by the spec.</description>\r
-  </testcase>\r
-  <testcase>\r
-    <name>Negative values on inline-progression-dimension</name>\r
-    <file>inline-progression-dimension_negative.fo</file>\r
-    <description>The code currently doesn't set negative values to 0mpt as mandated by the spec.</description>\r
-  </testcase>\r
   <testcase>\r
     <name>Markers and core function evaluation</name>\r
     <file>from-table-column_marker.fo</file>\r
     <description>The code currently evaluates this function according to the column in which the \r
-    marker appearsin the source document, rather than the column it is retrieved in.</description>\r
+    marker appears in the source document, rather than the column it is retrieved in.</description>\r
   </testcase>\r
 </disabled-testcases>\r