Class BoxRenderer

java.lang.Object
org.xhtmlrenderer.swing.BoxRenderer

public class BoxRenderer extends Object

Renders an XML files, formatted with CSS, as an Box. Input is a document in the form of file or URL, and output is the root of the Box model. A BoxRenderer is not intended to be re-used for multiple document sources; just create new BoxRenderers for each one you need. BoxRenderer is not thread-safe. Standard usage pattern is

 File xhtml = ...
 BoxRenderer rend = new BoxRenderer(xhtml);
 Box rootBox = rend.render();
 

The document is not loaded, and layout and render don't take place, until render() is called. Subsequent calls to render() don't result in a reload; create a new BoxRenderer instance to do so.

As with RootPanel, you can access the SharedContext instance that will be used by this renderer and change settings to control the rendering process; use getSharedContext().

Not thread-safe.

  • Field Details

    • DEFAULT_HEIGHT

      private static final int DEFAULT_HEIGHT
      See Also:
    • DEFAULT_DOTS_PER_POINT

      private static final int DEFAULT_DOTS_PER_POINT
      See Also:
    • DEFAULT_DOTS_PER_PIXEL

      private static final int DEFAULT_DOTS_PER_PIXEL
      See Also:
    • sharedContext

      private SharedContext sharedContext
    • outputDevice

      private Java2DOutputDevice outputDevice
    • doc

      private Document doc
    • root

      private Box root
    • rendered

      private boolean rendered
      Whether we've completed rendering; image will only be rendered once.
    • sourceDocument

      private final String sourceDocument
    • sourceDocumentBase

      private final String sourceDocumentBase
    • width

      private final int width
    • height

      private int height
    • NO_HEIGHT

      private static final int NO_HEIGHT
      See Also:
    • renderingHints

      private Map<Object,Object> renderingHints
    • layoutContext

      private LayoutContext layoutContext
  • Constructor Details

    • BoxRenderer

      public BoxRenderer(String url, String baseUrl, int width, int height)
      Creates a new instance for a given URL. Does not render until render() is called for the first time.
      Parameters:
      url - The location of the document to be rendered.
      baseUrl - The base url for the document, against which relative paths are resolved.
      width - Target width, in pixels, for the image; required to provide horizontal bounds for the layout.
    • BoxRenderer

      public BoxRenderer(File file, int width, int height) throws IOException
      Creates a new instance for a given File. Does not render until render() is called for the first time.
      Parameters:
      file - The file to be rendered.
      width - Target width, in pixels, for the image; required to provide horizontal bounds for the layout.
      height - Target height, in pixels, for the image
      Throws:
      IOException
    • BoxRenderer

      public BoxRenderer(File file, int width) throws IOException
      Creates a new instance for a given File. Does not render until render() is called for the first time.
      Parameters:
      file - The file to be rendered.
      width - Target width, in pixels, for the image; required to provide horizontal bounds for the layout. Height is calculated based on content
      Throws:
      IOException
    • BoxRenderer

      public BoxRenderer(String url, int width)
      Renderer for a given URL (which is also used as the base) and a specified width; height is calculated automatically.
      Parameters:
      url - The location of the document to be rendered.
      width - Target width, in pixels, for the image; required to provide horizontal bounds for the layout. Height is calculated based on content
    • BoxRenderer

      public BoxRenderer(String url, String baseurl, int width)
      Renderer for a given URL and a specified width; height is calculated automatically.
      Parameters:
      url - The location of the document to be rendered.
      baseurl - The base url for the document, against which relative paths are resolved.
      width - Target width, in pixels, for the image; required to provide horizontal bounds for the layout. Height is calculated based on content
    • BoxRenderer

      public BoxRenderer(String url, int width, int height)
      Renderer for a given URL and a specified width; height is calculated automatically.
      Parameters:
      url - The location of the document to be rendered.
      width - Target width, in pixels, for the image; required to provide horizontal bounds for the layout.
      height - Target height, in pixels, for the image
  • Method Details

    • setRenderingHints

      public void setRenderingHints(Map<Object,Object> hints)
      Sets the rendering hints to apply to the Graphics2D instance used by the renderer; see Graphics2D.setRenderingHints(java.util.Map). The Map need not specify values for all properties; any settings in this map will be applied as override to the default settings, and will not replace the entire Map for the Graphics2D instance.
      Parameters:
      hints - values to override in default rendering hints for Graphics2D we are rendering to
    • getSharedContext

      public SharedContext getSharedContext()
      Returns the SharedContext to be used by renderer. Is instantiated along with the class, so can be accessed before render() is called to tune the rendering process.
      Returns:
      the SharedContext instance that will be used by this renderer
    • getLayoutContext

      public LayoutContext getLayoutContext()
      Returns the LayoutContext to be used by renderer. Is instantiated along with the class, so can be accessed before render() is called to tune the rendering process.
      Returns:
      the LayoutContext instance that will be used by this renderer
    • render

      public Box render()
      Renders the XML document if necessary and returns the root Box. If already rendered, same Box reference will be returned.
      Returns:
      The XML rendered as a Box.
    • createBufferedImage

      protected BufferedImage createBufferedImage(int width, int height)
      Returns a BufferedImage using the specified width and height. By default, this returns an image compatible with the screen (if not in "headless" mode) formatted for RGB.
      Parameters:
      width - target width
      height - target height
      Returns:
      new BI
    • setDocument

      private void setDocument(Document doc, String url, NamespaceHandler nsh)
    • layout

      private void layout(int width)
    • loadDocument

      private Document loadDocument(String uri)
    • newLayoutContext

      private LayoutContext newLayoutContext()
    • init

      private void init()
    • newSharedContext

      private SharedContext newSharedContext(UserAgentCallback userAgent)