pbwest      2002/10/04 09:28:58

  Modified:    src/org/apache/fop/fo Tag: FOP_0-20-0_Alt-Design FONode.java
  Log:
  Changed stackedProps to specifiedProps.
  Set inherited and non-inherited properties which had not been specified.
  Removed getParentPropertyValue().
  Added getCurrentFontSize() and getPropertyValue().
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.19.2.14 +83 -44    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.13
  retrieving revision 1.19.2.14
  diff -u -r1.19.2.13 -r1.19.2.14
  --- FONode.java       3 Oct 2002 13:24:56 -0000       1.19.2.13
  +++ FONode.java       4 Oct 2002 16:28:57 -0000       1.19.2.14
  @@ -71,8 +71,8 @@
       protected PropertyParser exprParser;
       /** The property set for this node. */
       protected PropertyValue[] propertySet;
  -    /** BitSet of properties for which specified values have been stacked. */
  -    private BitSet stackedProps =
  +    /** BitSet of properties for which have been specified on this node. */
  +    private BitSet specifiedProps =
                                   new BitSet(PropNames.LAST_PROPERTY_INDEX + 1);
       /** The <i>attrSet</i> argument. */
       public final int attrSet;
  @@ -120,18 +120,16 @@
           }
           // 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);
  -        }
  +                 prop >= 0;
  +                 prop = inheritedBitSet.nextSetBit(++prop)) {
  +            System.out.println("...Setting inherited prop " + prop
  +                               + " " + PropNames.getPropertyName(prop));
  +            propertySet[prop] = fromParent(prop);  
  +        }         
   
           for (int prop = nonInheritedBitSet.nextSetBit(0);
  -             prop >= 0;
  -             prop = inheritedBitSet.nextSetBit(++prop))
  +                 prop >= 0;
  +                 prop = inheritedBitSet.nextSetBit(++prop))
           {
               propertySet[prop] = foTree.getInitialValue(prop);
           }
  @@ -210,13 +208,13 @@
               foTree.popPropertyValue(property);
           value.setStackedBy(this);
           foTree.pushPropertyValue(value);
  -        stackedProps.set(property);
  +        specifiedProps.set(property);
       }
   
       private void unstackValues() throws PropertyException {
  -        for (int prop = stackedProps.nextSetBit(0);
  +        for (int prop = specifiedProps.nextSetBit(0);
                prop >=0;
  -             prop = stackedProps.nextSetBit(++prop)
  +             prop = specifiedProps.nextSetBit(++prop)
                ) {
               PropertyValue value = foTree.popPropertyValue(prop);
               if (value.getStackedBy() != this)
  @@ -226,15 +224,6 @@
       }
   
       /**
  -     * Get the parent's <tt>PropertyValue</tt> for the given property.
  -     * @param property - the property of interest.
  -     * @return the <tt>PropertyValue</tt> of the parent node.
  -     */
  -    public PropertyValue getParentPropertyValue(int property) {
  -        return parent.propertySet[property];
  -    }
  -
  -    /**
        * Get the <tt>PropertyValue</tt> of the nearest ancestor with a
        * specified value for the given property.
        * @param property - the property of interest.
  @@ -296,12 +285,12 @@
       }
   
       /**
  -     * Get the computed value from the parent FO of the source property.
  +     * Get the adjusted value from the parent FO of the source property.
  +     * @see #fromParent(init,int)
  +     * @see #getPropertyValue(int)
        * @param property - the index of both target and source properties.
  -     * @return - the computed value from the parent FO node, if it exists.
  -     * If not, get the computed initial value.  If no computed
  -     * value is available, return an <tt>Inherit</tt> object with a reference
  -     * to the PropertyTriplet.
  +     * @return - the adjusted value from the parent FO node, if it exists.
  +     * If not, get the adjusted initial value.
        */
       public PropertyValue fromParent(int property)
                   throws PropertyException
  @@ -310,25 +299,75 @@
       }
   
       /**
  -     * Get the computed value from the parent FO of the source property.
  +     * Get the adjusted <tt>PropertyValue</tt> for the given source property
  +     * on the parent <tt>FONode</tt>. If this node is not the root,
  +     * call the <i>getPropertyValue</i> method in the parent node, adjust that
  +     * that value, and return the adjusted value. Do not set the current
  +     * value of the property on this node.
  +     * <p>If this is the root node, return the adjusted initial value for the
  +     * property.  Do not set the current value of the property on this node.
  +     * <p>The <b>adjusted value</b> is either the value itself, or, if the
  +     * value is an unresolved relative length, an <tt>IndirectValue</tt>
  +     * referring to that unresolved length.
  +     * Cf. {@link #getPropertyValue(int)}.
        * @param property - the index of the target property.
        * @param sourceProperty - the index of the source property.
        * @return - the computed value from the parent FO node, if it exists.
  -     * If not, get the computed initial value.  If no computed
  -     * value is available, return an <tt>Inherit</tt> object with a reference
  -     * to the PropertyTriplet.
  +     * If not, get the adjusted initial value.
        */
       public PropertyValue fromParent(int property, int sourceProperty)
                   throws PropertyException
       {
  -        PropertyValue value = getParentPropertyValue(sourceProperty);
  -        if (value == null) {
  -            // No computed value is available.  Use an IndirectValue
  -            Inherit inherit = new Inherit(property, sourceProperty);
  -            inherit.setInheritedValue(value);
  -            return inherit;
  -        }
  -        return value;
  +        if (parent != null)
  +            return IndirectValue.adjustedPropertyValue
  +                                    (parent.getPropertyValue(sourceProperty));
  +        else // root
  +            return IndirectValue.adjustedPropertyValue
  +                                    (foTree.getInitialValue(sourceProperty));
       }
  -    
  +
  +    public PropertyValue currentFontSize() throws PropertyException {
  +        return getPropertyValue(PropNames.FONT_SIZE);
  +    }
  +
  +
  +    /**
  +     * Get the adjusted <tt>PropertyValue</tt> for the given property index.
  +     * <pre>
  +     * If the property has a value in the node, return that adjusted value.
  +     * If not, and
  +     *     if this node is not the root,
  +     *                     and the property is an inherited property,
  +     *         call this method in the parent node,
  +     *         adjust that that value,
  +     *         set this node's value to the adjusted value,
  +     *         and return the adjusted value.
  +     *     else this node is the root, or the property is not inherited
  +     *         get the adjusted initial value of the property
  +     *         set the property value in this node to that value,
  +     *         and return that value.
  +     * <pre>
  +     * <p>The <b>adjusted value</b> is either the value itself, or, if the
  +     * value is an unresolved relative length, an <tt>IndirectValue</tt>
  +     * referring to that unresolved length.
  +     * @param index - the property index.
  +     * @return a <tt>PropertyValue</tt> containing the adjusted property
  +     * value for the indexed property.
  +     */
  +    public PropertyValue getPropertyValue(int property)
  +                throws PropertyException
  +    {
  +        PropertyValue pval;
  +        if ((pval = propertySet[property]) != null) 
  +            return IndirectValue.adjustedPropertyValue(pval);
  +        if (parent != null && PropertyConsts.inheritedProps.get(property))
  +            return (propertySet[property] =
  +                               IndirectValue.adjustedPropertyValue
  +                                        (parent.getPropertyValue(property)));
  +        else // root
  +            return (propertySet[property] =
  +                        IndirectValue.adjustedPropertyValue
  +                                        (foTree.getInitialValue(property)));
  +    }
  +
   }// FONode
  
  
  

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

Reply via email to