pbwest      2002/10/03 06:24:57

  Modified:    src/org/apache/fop/fo Tag: FOP_0-20-0_Alt-Design FONode.java
  Log:
  Added inherited and non-inherited bitsets.
  Set inherited and non-inherited properties through bitsets.
  Moved test of specified property against subtree attribute set to
  top of attributes handling.
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.19.2.13 +50 -30    xml-fop/src/org/apache/fop/fo/FONode.java
  
  Index: FONode.java
  ===================================================================
  RCS file: /home/cvs/xml-fop/src/org/apache/fop/fo/FONode.java,v
  retrieving revision 1.19.2.12
  retrieving revision 1.19.2.13
  diff -u -r1.19.2.12 -r1.19.2.13
  --- FONode.java       2 Oct 2002 15:14:21 -0000       1.19.2.12
  +++ FONode.java       3 Oct 2002 13:24:56 -0000       1.19.2.13
  @@ -2,6 +2,7 @@
   
   import org.apache.fop.fo.FOTree;
   import org.apache.fop.fo.FOAttributes;
  +import org.apache.fop.fo.FObjectNames;
   import org.apache.fop.fo.FOPropertySets;
   import org.apache.fop.fo.expr.PropertyException;
   import org.apache.fop.fo.expr.PropertyParser;
  @@ -76,7 +77,13 @@
       /** The <i>attrSet</i> argument. */
       public final int attrSet;
       /** The <tt>ROBitSet</tt> of the <i>attrSet</i> argument. */
  -    protected ROBitSet nodeAttrBitSet;
  +    protected ROBitSet attrBitSet;
  +    /** The <tt>ROBitSet</tt> of inherited properties for the
  +        <i>attrSet</i> argument. */
  +    protected ROBitSet inheritedBitSet;
  +    /** The <tt>ROBitSet</tt> of non-inherited prperties for the
  +        <i>attrSet</i> argument. */
  +    protected ROBitSet nonInheritedBitSet;
       /** Ancestor reference area of this FONode. */
       protected FONode ancestorRefArea = null;
   
  @@ -100,7 +107,9 @@
           this.parent = parent;
           this.event = event;
           this.attrSet = attrSet;
  -        nodeAttrBitSet = FOPropertySets.getAttrROBitSet(attrSet);
  +        attrBitSet = FOPropertySets.getAttrROBitSet(attrSet);
  +        inheritedBitSet = FOPropertySets.getInheritedROBitSet(attrSet);
  +        nonInheritedBitSet = FOPropertySets.getNonInheritedROBitSet(attrSet);
           xmlevents = foTree.xmlevents;
           namespaces = xmlevents.getNamespaces();
           exprParser = foTree.exprParser;
  @@ -110,6 +119,23 @@
               processAttributes();
           }
           // Set up the remaining properties.
  +        for (int prop = inheritedBitSet.nextSetBit(0);
  +             prop >= 0;
  +             prop = inheritedBitSet.nextSetBit(++prop))
  +        {
  +            if (parent != null)
  +                propertySet[prop] = parent.propertySet[prop];
  +            else
  +                propertySet[prop] = foTree.getInitialValue(prop);
  +        }
  +
  +        for (int prop = nonInheritedBitSet.nextSetBit(0);
  +             prop >= 0;
  +             prop = inheritedBitSet.nextSetBit(++prop))
  +        {
  +            propertySet[prop] = foTree.getInitialValue(prop);
  +        }
  +        
       }
   
       private void processAttributes() throws FOPException, PropertyException {
  @@ -122,43 +148,37 @@
           }
           for (int propx = 0; propx < numAttrs; propx++) {
               PropertyValue props;
  -            int type;
  +            int ptype;
               int property;
               int prop = foKeys[propx].intValue();
  +            if ( ! attrBitSet.get(prop)) {
  +                MessageHandler.log("Ignoring "
  +                                   + PropNames.getPropertyName(prop)
  +                                   + " on "
  +                                   + FObjectNames.getFOName(type)
  +                                   + " for attribute set "
  +                                   + FOPropertySets.getAttrSetName(attrSet)
  +                                   + ".");
  +                continue;
  +            }
               String attrValue = foAttributes.getFoAttrValue(prop);
               props = handleAttrValue(prop, attrValue);
  -            type = props.getType();
  -            if (type != PropertyValue.LIST) { 
  +            ptype = props.getType();
  +            if (ptype != PropertyValue.LIST) { 
                   property = props.getProperty();
  -                if ( ! nodeAttrBitSet.get(property)) {
  -                    MessageHandler.log("Ignoring property "
  -                                       + PropNames.getPropertyName(property)
  -                                       + " for attribute set "
  -                                       + FOPropertySets.getAttrSetName(attrSet)
  -                                       + ".");
  -                } else {
  -                    stackValue(props);
  -                    // Handle corresponding properties here
  -                    // Update the propertySet
  -                    propertySet[props.getProperty()] = props;
  -                }
  +                stackValue(props);
  +                // Handle corresponding properties here
  +                // Update the propertySet
  +                propertySet[props.getProperty()] = props;
               } else { // a list
                   PropertyValue value;
                   Iterator propvals = ((PropertyValueList)props).iterator();
                   while (propvals.hasNext()) {
                       value = (PropertyValue)(propvals.next());
                       property = value.getProperty();
  -                    if ( ! nodeAttrBitSet.get(property)) {
  -                        MessageHandler.log("Ignoring property "
  -                                       + PropNames.getPropertyName(property)
  -                                       + " for attribute set "
  -                                       + FOPropertySets.getAttrSetName(attrSet)
  -                                           + ".");
  -                    } else {
  -                        stackValue(value);
  -                        // Handle corresponding properties here
  -                        propertySet[value.getProperty()] = value;
  -                    }
  +                    stackValue(value);
  +                    // Handle corresponding properties here
  +                    propertySet[value.getProperty()] = value;
                   }
               }
           }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to