pbwest      2002/11/12 20:04:48

  Modified:    src/org/apache/fop/fo Tag: FOP_0-20-0_Alt-Design FONode.java
  Log:
  Created stateFlags.
  Moved attribute set constants from FOPropertySets and merged with
  stateFlags.
  Changed attrSet argument to constructor to a stateFlags arg.
  Removed numProps arg from constructor.
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.19.2.24 +61 -17    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.23
  retrieving revision 1.19.2.24
  diff -u -r1.19.2.23 -r1.19.2.24
  --- FONode.java       11 Nov 2002 17:19:38 -0000      1.19.2.23
  +++ FONode.java       13 Nov 2002 04:04:48 -0000      1.19.2.24
  @@ -52,26 +52,57 @@
       private static final String tag = "$Name$";
       private static final String revision = "$Revision$";
   
  +    /**
  +     * State flags: a bit set of states applicable during FO tree build.
  +     * N.B. States must be powers of 2.
  +     */
  +    public static final int
  +             NOSTATE = 0
  +        // These are used to select the attribute set for the node
  +           ,ROOT_SET = 1
  +   ,DECLARATIONS_SET = 2
  +         ,LAYOUT_SET = 4
  +     ,SEQ_MASTER_SET = 8
  +        ,PAGESEQ_SET = 16
  +           ,FLOW_SET = 32
  +         ,STATIC_SET = 64
  +          ,TITLE_SET = 128
  +         ,MARKER_SET = 256
  +        ,OUT_OF_LINE = 512
  +            ;
  +
  +    /** The subset of <i>stateFlags</i> that select the relevant
  +        atttribute set or the node. */
  +    public static final int ATTRIBUTESETS = 
  +        ROOT_SET | DECLARATIONS_SET | LAYOUT_SET | SEQ_MASTER_SET |
  +        PAGESEQ_SET | FLOW_SET | STATIC_SET | TITLE_SET | MARKER_SET;
  +
       /** The buffer from which parser events are drawn. */
       protected SyncedFoXmlEventsBuffer xmlevents;
  +
       /** The namespaces object associated with <i>xmlevents</i>. */
       protected XMLNamespaces namespaces;
  +
       /** The FO type. */
       public final int type;
   
       /** The attributes defined on this node. When the FO subtree of this
        * node has been constructed, it will be deleted. */
       public FOAttributes foAttributes;
  +
       /** The map of properties specified on this node. N.B. This
         * <tt>HashMap</tt> starts life in FOAttributes.  It is modifiable, and
         * will be modified when is contains shorthands or compounds.
         * When the FO subtree of this node has been constructed, and the
         * <i>propertySet</i> is complete, it will be deleted. */
       public HashMap foProperties = null;
  +
       /** The sorted keys of <i>foProperties</i>. */
       protected Integer[] foKeys = null;
  +
       /** The size of <i>foKeys</i>. */
       private int numAttrs = 0;
  +
       /** BitSet of properties which have been specified on this node. */
       private BitSet specifiedProps =
                                   new BitSet(PropNames.LAST_PROPERTY_INDEX + 1);
  @@ -85,17 +116,21 @@
           While <i>sparsePropsSet</i> is null,
           this variable will be a reference to the complete property set. */
       private PropertyValue[] propertySet;
  +
       /** The set of properties directly applicable to this node.  Its size is
           determined by the <i>numProps</i> value passed in to the constructor.
           */
       private PropertyValue[] sparsePropsSet;
  +
       /** Map of <tt>Integer</tt> indices of <i>sparsePropsSet</i> array.
           It is indexed by the FO index of the FO associated with a given
           position in the <i>propertySet</i> array. */
       private final HashMap sparsePropsMap;
  +
       /** An array of of the applicable property indices, in property index
           order. */
       private final int[] sparseIndices;
  +
       /** The number of applicable properties. Size of <i>sparsePropsSet</i>. */
       private final int numProps;
   
  @@ -103,16 +138,13 @@
       protected PropertyParser exprParser;
   
       /** The <i>attrSet</i> argument. */
  -    public final int attrSet;
  +    protected int attrSet;
  +
       /** The <tt>ROBitSet</tt> of the <i>attrSet</i> argument. */
       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 properties for the
  -        <i>attrSet</i> argument. */
  -    //protected ROBitSet nonInheritedBitSet;
  +    /** The state flags passed to this node. */
  +    protected int stateFlags;
   
       /** Ancestor reference area of this FONode. */
       protected FONode ancestorRefArea = null;
  @@ -141,30 +173,42 @@
        * @param parent an <tt>FONode</tt>, the parent node of this node in
        * <i>foTree</i>
        * @param event the <tt>XMLEvent</tt> that triggered the creation of this
  -     * @param attrSet the set of attributes relevant at this point in the
  -     * tree.
  -     * node
  +     * node.
  +     * @param stateFlags - the set of states relevant at this point in the
  +     * tree.  Includes the state information necessaryto select an attribute
  +     * set for this node.
  +     * @param sparsePropsMap - a <tt>HashMap</tt> mapping the property indices
  +     * to their offsets in the set of properties applicable to this node.
  +     * @param sparseindices - an <tt>int[]</tt> holding the set of property
  +     * indices applicable to this node, in ascending order.
  +     * <i>sparsePropsMap</i> maps property indices to a position in this array.
  +     * Together they paovide a sparse array facility for this node's
  +     * properties.
        */
       public FONode
  -        (FOTree foTree, int type, FONode parent, FoXMLEvent event, int attrSet,
  -            HashMap sparsePropsMap, int[] sparseIndices, int numProps)
  +        (FOTree foTree, int type, FONode parent, FoXMLEvent event,
  +             int stateFlags, HashMap sparsePropsMap, int[] sparseIndices)
           throws TreeException, FOPException, PropertyException
       {
           super(foTree, parent);
           if (type == FObjectNames.BLOCK)
               System.out.println("Constructing FONode for FoBlock");
           this.type = type;
  -        this.attrSet = attrSet;
  +        this.stateFlags = stateFlags;
  +        attrSet = stateFlags & ATTRIBUTESETS;
  +        if ((attrSet & (attrSet - 1)) != 0)
  +            throw new PropertyException
  +                    ("Invalid attribut set: " + attrSet);
           this.sparsePropsMap = sparsePropsMap;
           this.sparseIndices = sparseIndices;
  -        this.numProps = numProps;
  +        this.numProps = sparseIndices.length;
           attrBitSet = FOPropertySets.getAttrROBitSet(attrSet);
           xmlevents = foTree.xmlevents;
           namespaces = xmlevents.getNamespaces();
           exprParser = foTree.exprParser;
           propertySet = new PropertyValue[PropNames.LAST_PROPERTY_INDEX + 1];
           foAttributes = new FOAttributes(event, this);
  -        if ( ! (attrSet == FOPropertySets.MARKER_SET)) {
  +        if ( ! (attrSet == MARKER_SET)) {
               processAttributes();
           }
           // Do not set up the remaining properties now.
  
  
  

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

Reply via email to