pbwest      2002/10/30 05:34:34

  Modified:    src/org/apache/fop/fo/pagination Tag: FOP_0-20-0_Alt-Design
                        FoSimplePageMaster.java
  Log:
  Added sparsePropsSet support.
  Added processing of all of the regions.
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.1.2.9   +95 -5     
xml-fop/src/org/apache/fop/fo/pagination/Attic/FoSimplePageMaster.java
  
  Index: FoSimplePageMaster.java
  ===================================================================
  RCS file: 
/home/cvs/xml-fop/src/org/apache/fop/fo/pagination/Attic/FoSimplePageMaster.java,v
  retrieving revision 1.1.2.8
  retrieving revision 1.1.2.9
  diff -u -r1.1.2.8 -r1.1.2.9
  --- FoSimplePageMaster.java   28 Oct 2002 00:08:11 -0000      1.1.2.8
  +++ FoSimplePageMaster.java   30 Oct 2002 13:34:34 -0000      1.1.2.9
  @@ -15,6 +15,7 @@
   import org.apache.fop.xml.XMLEvent;
   import org.apache.fop.xml.FoXMLEvent;
   import org.apache.fop.apps.FOPException;
  +import org.apache.fop.fo.PropertySets;
   import org.apache.fop.fo.FOPropertySets;
   import org.apache.fop.fo.FObjectNames;
   import org.apache.fop.fo.FONode;
  @@ -23,6 +24,10 @@
   import org.apache.fop.datastructs.Tree;
   import org.apache.fop.datatypes.PropertyValue;
   import org.apache.fop.datatypes.NCName;
  +import org.apache.fop.datatypes.Ints;
  +
  +import java.util.HashMap;
  +import java.util.BitSet;
   
   /**
    * Implements the fo:simple-page-master flow object
  @@ -32,6 +37,53 @@
       private static final String tag = "$Name$";
       private static final String revision = "$Revision$";
   
  +    /** 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>sparsePropsSet</i> array.  See
  +        {@link org.apache.fop.fo.FONode#sparsePropsSet FONode.sparsePropsSet}.
  +     */
  +    private static final HashMap sparsePropsMap;
  +
  +    /** An <tt>int</tt> array of of the applicable property indices, in
  +        property index order. */
  +    private static final int[] sparseIndices;
  +
  +    /** The number of applicable properties.  This is the size of the
  +        <i>sparsePropsSet</i> array. */
  +    private static final int numProps;
  +
  +    static {
  +        // Collect the sets of properties that apply
  +        BitSet propsets = PropertySets.marginBlockSetClone();
  +        propsets.set(PropNames.MASTER_NAME);
  +        propsets.set(PropNames.PAGE_HEIGHT);
  +        propsets.set(PropNames.PAGE_WIDTH);
  +        propsets.set(PropNames.REFERENCE_ORIENTATION);
  +        propsets.set(PropNames.WRITING_MODE);
  +
  +        // Map these properties into sparsePropsSet
  +        // sparsePropsSet is a HashMap containing the indicies of the
  +        // sparsePropsSet array, indexed by the FO index of the FO slot
  +        // in sparsePropsSet.
  +        sparsePropsMap = new HashMap();
  +        numProps = propsets.cardinality();
  +        sparseIndices = new int[numProps];
  +        int propx = 0;
  +        for (int next = propsets.nextSetBit(0);
  +                next >= 0;
  +                next = propsets.nextSetBit(next + 1)) {
  +            sparseIndices[propx] = next;
  +            sparsePropsMap.put
  +                        (Ints.consts.get(next), Ints.consts.get(propx++));
  +        }
  +    }
  +
  +    private FoRegionBody regionBody;
  +    private FoRegionBefore regionBefore;
  +    private FoRegionAfter regionAfter;
  +    private FoRegionStart regionStart;
  +    private FoRegionEnd regionEnd;
  +
       /**
        * @param foTree the FO tree being built
        * @param parent the parent FONode of this node
  @@ -42,7 +94,8 @@
           throws Tree.TreeException, FOPException
       {
           super(foTree, FObjectNames.SIMPLE_PAGE_MASTER, parent, event,
  -              FOPropertySets.LAYOUT_SET);
  +              FOPropertySets.LAYOUT_SET, sparsePropsMap, sparseIndices,
  +              numProps);
           // Process regions here
           FoXMLEvent regionEv;
           if ((regionEv = xmlevents.expectStartElement
  @@ -50,14 +103,51 @@
               throw new FOPException
                   ("No fo:region-body in simple-page-master: "
                       + getMasterName());
  +        // Process region-body
  +        regionBody = new FoRegionBody(foTree, this, regionEv);
  +        xmlevents.getEndElement(regionEv);
  +
  +        // Remaining regions are optional
  +        if ((regionEv = xmlevents.expectStartElement
  +                    (FObjectNames.REGION_BEFORE, XMLEvent.DISCARD_W_SPACE))
  +                != null)
  +        {
  +            regionBefore = new FoRegionBefore(foTree, this, regionEv);
  +            xmlevents.getEndElement(regionEv);
  +        }
  +
  +        if ((regionEv = xmlevents.expectStartElement
  +                    (FObjectNames.REGION_AFTER, XMLEvent.DISCARD_W_SPACE))
  +                != null)
  +        {
  +            regionAfter = new FoRegionAfter(foTree, this, regionEv);
  +            xmlevents.getEndElement(regionEv);
  +        }
  +
  +        if ((regionEv = xmlevents.expectStartElement
  +                    (FObjectNames.REGION_START, XMLEvent.DISCARD_W_SPACE))
  +                != null)
  +        {
  +            regionStart = new FoRegionStart(foTree, this, regionEv);
  +            xmlevents.getEndElement(regionEv);
  +        }
  +
  +        if ((regionEv = xmlevents.expectStartElement
  +                    (FObjectNames.REGION_END, XMLEvent.DISCARD_W_SPACE))
  +                != null)
  +        {
  +            regionEnd = new FoRegionEnd(foTree, this, regionEv);
  +            xmlevents.getEndElement(regionEv);
  +        }
   
  -        FoXMLEvent ev = xmlevents.getEndElement(event);
  +        // Clean up the build environment
  +        makeSparsePropsSet();
       }
   
       /**
        * @return a <tt>String</tt> with the "master-name" attribute value.
        */
       public String getMasterName() throws PropertyException {
  -        return ((NCName)propertySet[PropNames.MASTER_NAME]).getNCName();
  +        return ((NCName)getPropertyValue(PropNames.MASTER_NAME)).getNCName();
       }
   }
  
  
  

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

Reply via email to