fop 1.0

org.apache.fop.render.intermediate
Class IFSerializer

java.lang.Object
  extended by org.apache.fop.render.intermediate.AbstractIFDocumentHandler
      extended by org.apache.fop.render.intermediate.AbstractXMLWritingIFDocumentHandler
          extended by org.apache.fop.render.intermediate.IFSerializer
All Implemented Interfaces:
IFConstants, IFDocumentHandler, IFDocumentNavigationHandler, IFPainter, XMLConstants

public class IFSerializer
extends AbstractXMLWritingIFDocumentHandler
implements IFConstants, IFPainter, IFDocumentNavigationHandler

IFPainter implementation that serializes the intermediate format to XML.


Field Summary
 
Fields inherited from class org.apache.fop.render.intermediate.AbstractXMLWritingIFDocumentHandler
handler, tFactory
 
Fields inherited from interface org.apache.fop.render.intermediate.IFConstants
EL_BORDER_RECT, EL_CLIP_RECT, EL_DOCUMENT, EL_FONT, EL_GROUP, EL_HEADER, EL_IMAGE, EL_LINE, EL_PAGE, EL_PAGE_CONTENT, EL_PAGE_HEADER, EL_PAGE_SEQUENCE, EL_PAGE_TRAILER, EL_RECT, EL_STRUCTURE_TREE, EL_TEXT, EL_TRAILER, EL_VIEWPORT, MIME_TYPE, NAMESPACE
 
Fields inherited from interface org.apache.fop.util.XMLConstants
CDATA, XLINK_HREF, XLINK_NAMESPACE, XLINK_PREFIX, XML_NAMESPACE, XML_PREFIX, XML_SPACE, XMLNS_NAMESPACE_URI, XMLNS_PREFIX
 
Constructor Summary
IFSerializer()
          Default constructor.
 
Method Summary
 void addResolvedAction(AbstractAction action)
          
 void clipRect(java.awt.Rectangle rect)
          Restricts the current clipping region with the given rectangle.
protected  RenderingContext createRenderingContext()
          
 void drawBorderRect(java.awt.Rectangle rect, BorderProps before, BorderProps after, BorderProps start, BorderProps end)
          Draws a border rectangle.
 void drawImage(org.w3c.dom.Document doc, java.awt.Rectangle rect)
          Draws an image (represented by a DOM document) inside a given rectangle.
 void drawImage(java.lang.String uri, java.awt.Rectangle rect)
          Draws an image identified by a URI inside a given rectangle.
 void drawLine(java.awt.Point start, java.awt.Point end, int width, java.awt.Color color, RuleStyle style)
          Draws a line.
 void drawText(int x, int y, int letterSpacing, int wordSpacing, int[] dx, java.lang.String text)
          Draws text.
 void endDocument()
          Indicates the end of a document.
 void endDocumentHeader()
          Indicates the end of the document header.
 void endDocumentTrailer()
          Indicates the end of the document trailer.
 void endGroup()
          Ends the current group and restores the previous coordinate system.
 void endPage()
          Indicates the end of a page
 void endPageContent()
          Indicates the end of the page content.
 void endPageHeader()
          Indicates the end of the page header.
 void endPageSequence()
          Indicates the end of a page sequence.
 void endPageTrailer()
          Indicates the end of the page trailer.
 void endViewport()
          Ends the current viewport and restores the previous coordinate system.
 void fillRect(java.awt.Rectangle rect, java.awt.Paint fill)
          Fills a rectangular area.
 IFDocumentHandlerConfigurator getConfigurator()
          Returns the configurator for this document handler, if any.
 IFDocumentNavigationHandler getDocumentNavigationHandler()
          Returns a document navigation handler if this feature is supported.
 FontInfo getFontInfo()
          Returns the font set to work with.
protected  java.lang.String getMainNamespace()
          Returns the main namespace used for generated XML content.
 java.lang.String getMimeType()
          Returns the MIME type of the output format that is generated by this implementation.
 IFDocumentHandler getMimickedDocumentHandler()
          Returns the document handler that is being mimicked by this serializer.
 void handleExtensionObject(java.lang.Object extension)
          Handles an extension object.
 void mimicDocumentHandler(IFDocumentHandler targetHandler)
          Tells this serializer to mimic the given document handler (mostly applies to the font set that is used during layout).
 void renderBookmarkTree(BookmarkTree tree)
          Render the bookmark tree.
 void renderLink(Link link)
          
 void renderNamedDestination(NamedDestination destination)
          Renders a named destination.
 void setDefaultFontInfo(FontInfo fontInfo)
          Sets the default font set (with no custom configuration).
 void setFont(java.lang.String family, java.lang.String style, java.lang.Integer weight, java.lang.String variant, java.lang.Integer size, java.awt.Color color)
          Updates the current font.
 void setFontInfo(FontInfo fontInfo)
          Sets the font set to work with.
 void startDocument()
          Indicates the start of a document.
 void startDocumentHeader()
          Indicates the start of the document header.
 void startDocumentTrailer()
          Indicates the start of the document trailer.
 void startGroup(java.awt.geom.AffineTransform transform)
          Starts a new group of graphical elements.
 void startGroup(java.awt.geom.AffineTransform[] transforms)
          Starts a new group of graphical elements.
 void startPage(int index, java.lang.String name, java.lang.String pageMasterName, java.awt.Dimension size)
          Indicates the start of a new page.
 IFPainter startPageContent()
          Indicates the start of the page content.
 void startPageHeader()
          Indicates the start of the page header.
 void startPageSequence(java.lang.String id)
          Indicates the start of a new page sequence.
 void startPageTrailer()
          Indicates the start of the page trailer.
 void startViewport(java.awt.geom.AffineTransform[] transforms, java.awt.Dimension size, java.awt.Rectangle clipRect)
          Starts a new viewport, establishing a new coordinate system.
 void startViewport(java.awt.geom.AffineTransform transform, java.awt.Dimension size, java.awt.Rectangle clipRect)
          Starts a new viewport, establishing a new coordinate system.
 boolean supportsPagesOutOfOrder()
          Indicates whether the painter supports to handle the pages in mixed order rather than ascending order.
 
Methods inherited from class org.apache.fop.render.intermediate.AbstractXMLWritingIFDocumentHandler
createContentHandler, setResult
 
Methods inherited from class org.apache.fop.render.intermediate.AbstractIFDocumentHandler
getContext, getUserAgent, setContext
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

IFSerializer

public IFSerializer()
Default constructor.

Method Detail

getMainNamespace

protected java.lang.String getMainNamespace()
Returns the main namespace used for generated XML content.

Specified by:
getMainNamespace in class AbstractXMLWritingIFDocumentHandler
Returns:
the main namespace

supportsPagesOutOfOrder

public boolean supportsPagesOutOfOrder()
Indicates whether the painter supports to handle the pages in mixed order rather than ascending order.

Specified by:
supportsPagesOutOfOrder in interface IFDocumentHandler
Returns:
true if out-of-order handling is supported

getMimeType

public java.lang.String getMimeType()
Returns the MIME type of the output format that is generated by this implementation.

Specified by:
getMimeType in interface IFDocumentHandler
Returns:
the MIME type

getConfigurator

public IFDocumentHandlerConfigurator getConfigurator()
Returns the configurator for this document handler, if any.

Specified by:
getConfigurator in interface IFDocumentHandler
Returns:
the configurator or null if there's no configurator

getDocumentNavigationHandler

public IFDocumentNavigationHandler getDocumentNavigationHandler()
Returns a document navigation handler if this feature is supported.

Specified by:
getDocumentNavigationHandler in interface IFDocumentHandler
Overrides:
getDocumentNavigationHandler in class AbstractIFDocumentHandler
Returns:
the document navigation handler or null if not supported

mimicDocumentHandler

public void mimicDocumentHandler(IFDocumentHandler targetHandler)
Tells this serializer to mimic the given document handler (mostly applies to the font set that is used during layout).

Parameters:
targetHandler - the document handler to mimic

getMimickedDocumentHandler

public IFDocumentHandler getMimickedDocumentHandler()
Returns the document handler that is being mimicked by this serializer.

Returns:
the mimicked document handler or null if no such document handler has been set

getFontInfo

public FontInfo getFontInfo()
Returns the font set to work with.

Specified by:
getFontInfo in interface IFDocumentHandler
Returns:
the font info object

setFontInfo

public void setFontInfo(FontInfo fontInfo)
Sets the font set to work with.

Specified by:
setFontInfo in interface IFDocumentHandler
Parameters:
fontInfo - the font info object

setDefaultFontInfo

public void setDefaultFontInfo(FontInfo fontInfo)
Sets the default font set (with no custom configuration).

Specified by:
setDefaultFontInfo in interface IFDocumentHandler
Parameters:
fontInfo - the font info object to populate

startDocument

public void startDocument()
                   throws IFException
Indicates the start of a document. This method may only be called once before any other event method.

Specified by:
startDocument in interface IFDocumentHandler
Overrides:
startDocument in class AbstractIFDocumentHandler
Throws:
IFException - if an error occurs while handling this event

startDocumentHeader

public void startDocumentHeader()
                         throws IFException
Indicates the start of the document header. This method is called right after the IFDocumentHandler.startDocument() method. Extensions sent to this painter between IFDocumentHandler.startDocumentHeader() and IFDocumentHandler.endDocumentHeader() apply to the document as a whole (like document metadata).

Specified by:
startDocumentHeader in interface IFDocumentHandler
Overrides:
startDocumentHeader in class AbstractIFDocumentHandler
Throws:
IFException - if an error occurs while handling this event

endDocumentHeader

public void endDocumentHeader()
                       throws IFException
Indicates the end of the document header. This method is called before the first page sequence.

Specified by:
endDocumentHeader in interface IFDocumentHandler
Overrides:
endDocumentHeader in class AbstractIFDocumentHandler
Throws:
IFException - if an error occurs while handling this event

startDocumentTrailer

public void startDocumentTrailer()
                          throws IFException
Indicates the start of the document trailer. This method is called after the last page sequence. Extensions sent to the painter between IFDocumentHandler.startDocumentTrailer() and IFDocumentHandler.endDocumentTrailer() apply to the document as a whole and is used for document-level content that is only known after all pages have been rendered (like named destinations or the bookmark tree).

Specified by:
startDocumentTrailer in interface IFDocumentHandler
Overrides:
startDocumentTrailer in class AbstractIFDocumentHandler
Throws:
IFException - if an error occurs while handling this event

endDocumentTrailer

public void endDocumentTrailer()
                        throws IFException
Indicates the end of the document trailer. This method is called right before the IFDocumentHandler.endDocument() method.

Specified by:
endDocumentTrailer in interface IFDocumentHandler
Overrides:
endDocumentTrailer in class AbstractIFDocumentHandler
Throws:
IFException - if an error occurs while handling this event

endDocument

public void endDocument()
                 throws IFException
Indicates the end of a document. This method may only be called once after the whole document has been handled. Implementations can release resources (close streams). It is an error to call any event method after this method.

Specified by:
endDocument in interface IFDocumentHandler
Throws:
IFException - if an error occurs while handling this event

startPageSequence

public void startPageSequence(java.lang.String id)
                       throws IFException
Indicates the start of a new page sequence.

Specified by:
startPageSequence in interface IFDocumentHandler
Parameters:
id - the page sequence's identifier (or null if none is available)
Throws:
IFException - if an error occurs while handling this event

endPageSequence

public void endPageSequence()
                     throws IFException
Indicates the end of a page sequence.

Specified by:
endPageSequence in interface IFDocumentHandler
Throws:
IFException - if an error occurs while handling this event

startPage

public void startPage(int index,
                      java.lang.String name,
                      java.lang.String pageMasterName,
                      java.awt.Dimension size)
               throws IFException
Indicates the start of a new page.

Specified by:
startPage in interface IFDocumentHandler
Parameters:
index - the index of the page (0-based)
name - the page name (usually the formatted page number)
pageMasterName - the name of the simple-page-master that generated this page
size - the size of the page (equivalent to the MediaBox in PDF)
Throws:
IFException - if an error occurs while handling this event

startPageHeader

public void startPageHeader()
                     throws IFException
Indicates the start of the page header.

Specified by:
startPageHeader in interface IFDocumentHandler
Overrides:
startPageHeader in class AbstractIFDocumentHandler
Throws:
IFException - if an error occurs while handling this event

endPageHeader

public void endPageHeader()
                   throws IFException
Indicates the end of the page header.

Specified by:
endPageHeader in interface IFDocumentHandler
Overrides:
endPageHeader in class AbstractIFDocumentHandler
Throws:
IFException - if an error occurs while handling this event

startPageContent

public IFPainter startPageContent()
                           throws IFException
Indicates the start of the page content. The method returns an IFPainter interface which is used to paint the page contents.

Specified by:
startPageContent in interface IFDocumentHandler
Returns:
the IFPainter for the page content
Throws:
IFException - if an error occurs while handling this event

endPageContent

public void endPageContent()
                    throws IFException
Indicates the end of the page content. Calls to the IFPainter returned by the respective IFDocumentHandler.startPageContent() method are illegal.

Specified by:
endPageContent in interface IFDocumentHandler
Throws:
IFException - if an error occurs while handling this event

startPageTrailer

public void startPageTrailer()
                      throws IFException
Indicates the start of the page trailer. The page trailer is used for writing down page elements which are only know after handling the page itself (like PDF targets).

Specified by:
startPageTrailer in interface IFDocumentHandler
Overrides:
startPageTrailer in class AbstractIFDocumentHandler
Throws:
IFException - if an error occurs while handling this event

endPageTrailer

public void endPageTrailer()
                    throws IFException
Indicates the end of the page trailer.

Specified by:
endPageTrailer in interface IFDocumentHandler
Overrides:
endPageTrailer in class AbstractIFDocumentHandler
Throws:
IFException - if an error occurs while handling this event

endPage

public void endPage()
             throws IFException
Indicates the end of a page

Specified by:
endPage in interface IFDocumentHandler
Throws:
IFException - if an error occurs while handling this event

startViewport

public void startViewport(java.awt.geom.AffineTransform transform,
                          java.awt.Dimension size,
                          java.awt.Rectangle clipRect)
                   throws IFException
Starts a new viewport, establishing a new coordinate system. A viewport has a size and can optionally be clipped. Corresponds to SVG's svg element.

Specified by:
startViewport in interface IFPainter
Parameters:
transform - the transformation matrix establishing the new coordinate system
size - the size of the viewport
clipRect - the clipping rectangle (may be null)
Throws:
IFException - if an error occurs while handling this element

startViewport

public void startViewport(java.awt.geom.AffineTransform[] transforms,
                          java.awt.Dimension size,
                          java.awt.Rectangle clipRect)
                   throws IFException
Starts a new viewport, establishing a new coordinate system. A viewport has a size and can optionally be clipped. Corresponds to SVG's svg element.

Specified by:
startViewport in interface IFPainter
Parameters:
transforms - a series of transformation matrices establishing the new coordinate system
size - the size of the viewport
clipRect - the clipping rectangle (may be null)
Throws:
IFException - if an error occurs while handling this element

endViewport

public void endViewport()
                 throws IFException
Ends the current viewport and restores the previous coordinate system.

Specified by:
endViewport in interface IFPainter
Throws:
IFException - if an error occurs while handling this element

startGroup

public void startGroup(java.awt.geom.AffineTransform[] transforms)
                throws IFException
Starts a new group of graphical elements. Corresponds to SVG's g element.

Specified by:
startGroup in interface IFPainter
Parameters:
transforms - a series of transformation matrices establishing the new coordinate system
Throws:
IFException - if an error occurs while handling this element

startGroup

public void startGroup(java.awt.geom.AffineTransform transform)
                throws IFException
Starts a new group of graphical elements. Corresponds to SVG's g element.

Specified by:
startGroup in interface IFPainter
Parameters:
transform - the transformation matrix establishing the new coordinate system
Throws:
IFException - if an error occurs while handling this element

endGroup

public void endGroup()
              throws IFException
Ends the current group and restores the previous coordinate system.

Specified by:
endGroup in interface IFPainter
Throws:
IFException - if an error occurs while handling this element

drawImage

public void drawImage(java.lang.String uri,
                      java.awt.Rectangle rect)
               throws IFException
Draws an image identified by a URI inside a given rectangle. This is the equivalent to an fo:external-graphic in XSL-FO.

Specified by:
drawImage in interface IFPainter
Parameters:
uri - the image's URI
rect - the rectangle in which the image shall be painted
Throws:
IFException - if an error occurs while handling this event

drawImage

public void drawImage(org.w3c.dom.Document doc,
                      java.awt.Rectangle rect)
               throws IFException
Draws an image (represented by a DOM document) inside a given rectangle. This is the equivalent to an fo:instream-foreign-object in XSL-FO.

Specified by:
drawImage in interface IFPainter
Parameters:
doc - the DOM document containing the foreign object
rect - the rectangle in which the image shall be painted
Throws:
IFException - if an error occurs while handling this event

clipRect

public void clipRect(java.awt.Rectangle rect)
              throws IFException
Restricts the current clipping region with the given rectangle.

Specified by:
clipRect in interface IFPainter
Parameters:
rect - the rectangle's coordinates and extent
Throws:
IFException - if an error occurs while handling this event

fillRect

public void fillRect(java.awt.Rectangle rect,
                     java.awt.Paint fill)
              throws IFException
Fills a rectangular area.

Specified by:
fillRect in interface IFPainter
Parameters:
rect - the rectangle's coordinates and extent
fill - the fill paint
Throws:
IFException - if an error occurs while handling this event

drawBorderRect

public void drawBorderRect(java.awt.Rectangle rect,
                           BorderProps before,
                           BorderProps after,
                           BorderProps start,
                           BorderProps end)
                    throws IFException
Draws a border rectangle. The border segments are specified through BorderProps instances.

Specified by:
drawBorderRect in interface IFPainter
Parameters:
rect - the rectangle's coordinates and extent
before - the border segment on the before-side (top)
after - the border segment on the after-side (bottom)
start - the border segment on the start-side (left)
end - the border segment on the end-side (right)
Throws:
IFException - if an error occurs while handling this event

drawLine

public void drawLine(java.awt.Point start,
                     java.awt.Point end,
                     int width,
                     java.awt.Color color,
                     RuleStyle style)
              throws IFException
Draws a line. NOTE: Currently, only horizontal lines are implemented!

Specified by:
drawLine in interface IFPainter
Parameters:
start - the start point of the line
end - the end point of the line
width - the line width
color - the line color
style - the line style (using the Constants.EN_* constants for the rule-style property)
Throws:
IFException - if an error occurs while handling this event

drawText

public void drawText(int x,
                     int y,
                     int letterSpacing,
                     int wordSpacing,
                     int[] dx,
                     java.lang.String text)
              throws IFException
Draws text. The initial coordinates (x and y) point to the starting point at the normal baseline of the font. The parameters letterSpacing, wordSpacing and the array dx are optional and can be used to influence character positioning (for example, for kerning).

Specified by:
drawText in interface IFPainter
Parameters:
x - X-coordinate of the starting point of the text
y - Y-coordinate of the starting point of the text
letterSpacing - additional spacing between characters (may be 0)
wordSpacing - additional spacing between words (may be 0)
dx - an array of adjustment values for each character in X-direction (may be null)
text - the text
Throws:
IFException - if an error occurs while handling this event

setFont

public void setFont(java.lang.String family,
                    java.lang.String style,
                    java.lang.Integer weight,
                    java.lang.String variant,
                    java.lang.Integer size,
                    java.awt.Color color)
             throws IFException
Updates the current font.

Specified by:
setFont in interface IFPainter
Parameters:
family - the font family (or null if there's no change)
style - the font style (or null if there's no change)
weight - the font weight (or null if there's no change)
variant - the font variant (or null if there's no change)
size - the font size (or null if there's no change)
color - the text color (or null if there's no change)
Throws:
IFException - if an error occurs while handling this event

handleExtensionObject

public void handleExtensionObject(java.lang.Object extension)
                           throws IFException
Handles an extension object. This can be a DOM document or any arbitrary object. If an implementation doesn't know how to handle a particular extension it is simply ignored.

Specified by:
handleExtensionObject in interface IFDocumentHandler
Parameters:
extension - the extension object
Throws:
IFException - if an error occurs while handling this event

createRenderingContext

protected RenderingContext createRenderingContext()


renderNamedDestination

public void renderNamedDestination(NamedDestination destination)
                            throws IFException
Renders a named destination.

Specified by:
renderNamedDestination in interface IFDocumentNavigationHandler
Parameters:
destination - the named destination
Throws:
IFException - if an error occurs while handling this event

renderBookmarkTree

public void renderBookmarkTree(BookmarkTree tree)
                        throws IFException
Render the bookmark tree.

Specified by:
renderBookmarkTree in interface IFDocumentNavigationHandler
Parameters:
tree - the bookmark tree
Throws:
IFException - if an error occurs while handling this event

renderLink

public void renderLink(Link link)
                throws IFException

Specified by:
renderLink in interface IFDocumentNavigationHandler
Throws:
IFException

addResolvedAction

public void addResolvedAction(AbstractAction action)
                       throws IFException

Specified by:
addResolvedAction in interface IFDocumentNavigationHandler
Throws:
IFException

fop 1.0

Copyright 1999-2010 The Apache Software Foundation. All Rights Reserved.