Class ListRenderer

All Implemented Interfaces:
IPropertyContainer, IRenderer

public class ListRenderer extends BlockRenderer
  • Constructor Details

    • ListRenderer

      public ListRenderer(List modelElement)
      Creates a ListRenderer from its corresponding layout object.
      Parameters:
      modelElement - the List which this object should manage
  • Method Details

    • layout

      public LayoutResult layout(LayoutContext layoutContext)
      Description copied from class: BlockRenderer
      This method simulates positioning of the renderer, including all of its children, and returns the LayoutResult, representing the layout result, including occupied area, status, i.e. if there was enough place to fit the renderer subtree, etc. LayoutResult can be extended to return custom layout results for custom elements, e.g. TextRenderer uses TextLayoutResult as its result. This method can be called standalone to learn how much area the renderer subtree needs, or can be called before IRenderer.draw(DrawContext), to prepare the renderer to be flushed to the output stream.
      Specified by:
      layout in interface IRenderer
      Overrides:
      layout in class BlockRenderer
      Parameters:
      layoutContext - the description of layout area and any other additional information
      Returns:
      result of the layout process
    • getNextRenderer

      public IRenderer getNextRenderer()
      Gets a new instance of this class to be used as a next renderer, after this renderer is used, if layout(LayoutContext) is called more than once.

      If a renderer overflows to the next area, iText uses this method to create a renderer for the overflow part. So if one wants to extend ListRenderer, one should override this method: otherwise the default method will be used and thus the default rather than the custom renderer will be created.

      Returns:
      new renderer instance
    • createSplitRenderer

      protected AbstractRenderer createSplitRenderer(int layoutResult)
      Description copied from class: BlockRenderer
      Creates a split renderer.
      Overrides:
      createSplitRenderer in class BlockRenderer
      Parameters:
      layoutResult - the result of content layouting
      Returns:
      a new AbstractRenderer instance
    • createOverflowRenderer

      protected AbstractRenderer createOverflowRenderer(int layoutResult)
      Description copied from class: BlockRenderer
      Creates an overflow renderer.
      Overrides:
      createOverflowRenderer in class BlockRenderer
      Parameters:
      layoutResult - the result of content layouting
      Returns:
      a new AbstractRenderer instance
    • getMinMaxWidth

      public MinMaxWidth getMinMaxWidth()
      Description copied from class: BlockRenderer
      Calculates min and max width values for current renderer.
      Overrides:
      getMinMaxWidth in class BlockRenderer
      Returns:
      instance of MinMaxWidth
    • makeListSymbolRenderer

      protected IRenderer makeListSymbolRenderer(int index, IRenderer renderer)
    • getListItemOrListProperty

      static Object getListItemOrListProperty(IRenderer listItem, IRenderer list, int propertyId)
    • createListSymbolRenderer

      private IRenderer createListSymbolRenderer(int index, IRenderer renderer)
    • surroundTextBullet

      private LineRenderer surroundTextBullet(IRenderer bulletRenderer)
    • correctListSplitting

      private LayoutResult correctListSplitting(IRenderer splitRenderer, IRenderer overflowRenderer, IRenderer causeOfNothing, LayoutArea occupiedArea)
      Corrects split and overflow renderers when Property.FORCED_PLACEMENT is applied.

      We assume that Property.FORCED_PLACEMENT is applied when the first ListItemRenderer cannot be fully layouted. This means that the problem has occurred in one of the first list item renderer's children. In that case we force the placement of all first item renderer's children before the one, which was the cause of LayoutResult.NOTHING, including this child.

      Notice that we do not expect Property.FORCED_PLACEMENT to be applied if we can render the first item renderer and strongly recommend not to set Property.FORCED_PLACEMENT manually.

      Parameters:
      splitRenderer - the split renderer before correction
      overflowRenderer - the overflow renderer before correction
      causeOfNothing - the renderer which has produced LayoutResult.NOTHING
      occupiedArea - the area occupied by layout before correction
      Returns:
      corrected layout result
    • initializeListSymbols

      private LayoutResult initializeListSymbols(LayoutContext layoutContext)