Class AreaTreeHandler


  • public class AreaTreeHandler
    extends FOEventHandler
    Area tree handler for formatting objects. Concepts: The area tree is to be as small as possible. With minimal classes and data to fully represent an area tree for formatting objects. The area tree needs to be simple to render and follow the spec closely. This area tree has the concept of page sequences. Wherever possible information is discarded or optimized to keep memory use low. The data is also organized to make it possible for renderers to minimize their output. A page can be saved if not fully resolved and once rendered a page contains only size and id reference information. The area tree pages are organized in a model that depends on the type of renderer.
    • Constructor Detail

      • AreaTreeHandler

        public AreaTreeHandler​(FOUserAgent userAgent,
                               java.lang.String outputFormat,
                               java.io.OutputStream stream)
                        throws FOPException
        Constructor.
        Parameters:
        userAgent - FOUserAgent object for process
        outputFormat - the MIME type of the output format to use (ex. "application/pdf").
        stream - OutputStream
        Throws:
        FOPException - if the RenderPagesModel cannot be created
    • Method Detail

      • setupModel

        protected void setupModel​(FOUserAgent userAgent,
                                  java.lang.String outputFormat,
                                  java.io.OutputStream stream)
                           throws FOPException
        Sets up the AreaTreeModel instance for use by the AreaTreeHandler.
        Parameters:
        userAgent - FOUserAgent object for process
        outputFormat - the MIME type of the output format to use (ex. "application/pdf").
        stream - OutputStream
        Throws:
        FOPException - if the RenderPagesModel cannot be created
      • getAreaTreeModel

        public AreaTreeModel getAreaTreeModel()
        Get the area tree model for this area tree.
        Returns:
        AreaTreeModel the model being used for this area tree
      • getLayoutManagerMaker

        public LayoutManagerMaker getLayoutManagerMaker()
        Get the LayoutManager maker for this area tree.
        Returns:
        LayoutManagerMaker the LayoutManager maker being used for this area tree
      • getIDTracker

        public IDTracker getIDTracker()
        Get the IDTracker for this area tree.
        Returns:
        IDTracker used to track reference ids for items in this area tree
      • isComplexScriptFeaturesEnabled

        public boolean isComplexScriptFeaturesEnabled()
        Check whether complex script features are enabled.
        Returns:
        true if using complex script features
      • startDocument

        public void startDocument()
                           throws org.xml.sax.SAXException
        Prepare AreaTreeHandler for document processing This is called from FOTreeBuilder.startDocument()
        Overrides:
        startDocument in class FOEventHandler
        Throws:
        org.xml.sax.SAXException - if there is an error
      • startRoot

        public void startRoot​(Root root)
        Description copied from class: FOEventHandler
        Called upon start of root element.
        Overrides:
        startRoot in class FOEventHandler
        Parameters:
        root - element
      • finishPrevPageSequence

        private void finishPrevPageSequence​(Numeric initialPageNumber)
        finish the previous pageSequence
      • startAbstractPageSequence

        private void startAbstractPageSequence​(AbstractPageSequence pageSequence)
      • wrapAndAddExtensionAttachments

        private void wrapAndAddExtensionAttachments​(java.util.List<ExtensionAttachment> list)
      • endPageSequence

        public void endPageSequence​(PageSequence pageSequence)
        End the PageSequence. The PageSequence formats Pages and adds them to the AreaTree. The area tree then handles what happens with the pages.
        Overrides:
        endPageSequence in class FOEventHandler
        Parameters:
        pageSequence - the page sequence ending
      • endExternalDocument

        public void endExternalDocument​(ExternalDocument document)
        Process the end of the external-document extension.
        Overrides:
        endExternalDocument in class FOEventHandler
        Parameters:
        document - the external-document node
      • notifyPageSequenceFinished

        public void notifyPageSequenceFinished​(AbstractPageSequence pageSequence,
                                               int pageCount)
        Called by the PageSequenceLayoutManager when it is finished with a page-sequence.
        Parameters:
        pageSequence - the page-sequence just finished
        pageCount - The number of pages generated for the page-sequence
      • endDocument

        public void endDocument()
                         throws org.xml.sax.SAXException
        End the document.
        Overrides:
        endDocument in class FOEventHandler
        Throws:
        org.xml.sax.SAXException - if there is some error
      • addOffDocumentItem

        private void addOffDocumentItem​(OffDocumentItem odi)
        Add a OffDocumentItem to the area tree model. This checks if the OffDocumentItem is resolvable and attempts to resolve or add the resolvable ids for later resolution.
        Parameters:
        odi - the OffDocumentItem to add.
      • generatePageViewportKey

        public java.lang.String generatePageViewportKey()
        Generates and returns a unique key for a page viewport.
        Returns:
        the generated key.
      • associateIDWithPageViewport

        @Deprecated
        public void associateIDWithPageViewport​(java.lang.String id,
                                                PageViewport pv)
        Deprecated.
        use getIDTracker().associateIDWithPageViewport(id, pv) instead
        Tie a PageViewport with an ID found on a child area of the PV. Note that an area with a given ID may be on more than one PV, hence an ID may have more than one PV associated with it.
        Parameters:
        id - the property ID of the area
        pv - a page viewport that contains the area with this ID
      • signalPendingID

        @Deprecated
        public void signalPendingID​(java.lang.String id)
        Deprecated.
        use getIDTracker().signalPendingID(id) instead
        This method tie an ID to the areaTreeHandler until this one is ready to be processed. This is used in page-number-citation-last processing so we know when an id can be resolved.
        Parameters:
        id - the id of the object being processed
      • signalIDProcessed

        @Deprecated
        public void signalIDProcessed​(java.lang.String id)
        Deprecated.
        use getIDTracker().signalIDProcessed(id) instead
        Signals that all areas for the formatting object with the given ID have been generated. This is used to determine when page-number-citation-last ref-ids can be resolved.
        Parameters:
        id - the id of the formatting object which was just finished
      • alreadyResolvedID

        @Deprecated
        public boolean alreadyResolvedID​(java.lang.String id)
        Deprecated.
        use getIDTracker().alreadyResolvedID(id) instead
        Check if an ID has already been resolved
        Parameters:
        id - the id to check
        Returns:
        true if the ID has been resolved
      • tryIDResolution

        @Deprecated
        public void tryIDResolution​(PageViewport pv)
        Deprecated.
        use getIDTracker().tryIDResolution(pv) instead
        Tries to resolve all unresolved ID references on the given page.
        Parameters:
        pv - page viewport whose ID refs to resolve
      • getPageViewportsContainingID

        @Deprecated
        public java.util.List<PageViewport> getPageViewportsContainingID​(java.lang.String id)
        Deprecated.
        use getIDTracker().getPageViewportsContainingID(id) instead
        Get the set of page viewports that have an area with a given id.
        Parameters:
        id - the id to lookup
        Returns:
        the list of PageViewports
      • addUnresolvedIDRef

        @Deprecated
        public void addUnresolvedIDRef​(java.lang.String idref,
                                       Resolvable res)
        Deprecated.
        use getIDTracker().addUnresolvedIDRef(idref, res) instead
        Add an Resolvable object with an unresolved idref
        Parameters:
        idref - the idref whose target id has not yet been located
        res - the Resolvable object needing the idref to be resolved