Class AbstractBranchSvgNodeRenderer

java.lang.Object
com.itextpdf.svg.renderers.impl.AbstractSvgNodeRenderer
com.itextpdf.svg.renderers.impl.AbstractBranchSvgNodeRenderer
All Implemented Interfaces:
IBranchSvgNodeRenderer, ISvgNodeRenderer
Direct Known Subclasses:
AbstractContainerSvgNodeRenderer, AbstractGradientSvgNodeRenderer, ClipPathSvgNodeRenderer, DefsSvgNodeRenderer, GroupSvgNodeRenderer, MarkerSvgNodeRenderer, PatternSvgNodeRenderer, StopSvgNodeRenderer

public abstract class AbstractBranchSvgNodeRenderer extends AbstractSvgNodeRenderer implements IBranchSvgNodeRenderer
Abstract class that will be the superclass for any element that can function as a parent.
  • Field Details

    • LOGGER

      private static final org.slf4j.Logger LOGGER
    • VIEWBOX_VALUES_NUMBER

      @Deprecated protected static final int VIEWBOX_VALUES_NUMBER
      Deprecated.
      The number of viewBox values. Deprecate in favour of SvgConstants.Values.VIEWBOX_VALUES_NUMBER
      See Also:
    • EPS

      private static final float EPS
      See Also:
    • children

      private final List<ISvgNodeRenderer> children
  • Constructor Details

    • AbstractBranchSvgNodeRenderer

      public AbstractBranchSvgNodeRenderer()
  • Method Details

    • doDraw

      protected void doDraw(SvgDrawContext context)
      Method that will set properties to be inherited by this branch renderer's children and will iterate over all children in order to draw them.
      Specified by:
      doDraw in class AbstractSvgNodeRenderer
      Parameters:
      context - the object that knows the place to draw this element and maintains its state
    • applyViewBox

      void applyViewBox(SvgDrawContext context)
      Applies a transformation based on a viewBox for a given branch node.
      Parameters:
      context - current svg draw context
    • applyViewportClip

      private void applyViewportClip(SvgDrawContext context)
      Applies a clipping operation based on the view port.
      Parameters:
      context - the svg draw context
    • cleanUp

      private void cleanUp(SvgDrawContext context)
      Cleans up the SvgDrawContext by removing the current viewport and by popping the current canvas.
      Parameters:
      context - context to clean
    • addChild

      public final void addChild(ISvgNodeRenderer child)
      Description copied from interface: IBranchSvgNodeRenderer
      Adds a renderer as the last element of the list of children.
      Specified by:
      addChild in interface IBranchSvgNodeRenderer
      Parameters:
      child - any renderer
    • getChildren

      public final List<ISvgNodeRenderer> getChildren()
      Description copied from interface: IBranchSvgNodeRenderer
      Gets all child renderers of this object.
      Specified by:
      getChildren in interface IBranchSvgNodeRenderer
      Returns:
      the list of child renderers (in the order that they were added)
    • deepCopyChildren

      protected final void deepCopyChildren(AbstractBranchSvgNodeRenderer deepCopy)
      Create a deep copy of every child renderer and add them to the passed AbstractBranchSvgNodeRenderer
      Parameters:
      deepCopy - renderer to add copies of children to
    • postDraw

      void postDraw(SvgDrawContext context)
      Description copied from class: AbstractSvgNodeRenderer
      Operations to be performed after drawing the element. This includes filling, stroking.
      Overrides:
      postDraw in class AbstractSvgNodeRenderer
      Parameters:
      context - the svg draw context
    • createDeepCopy

      public abstract ISvgNodeRenderer createDeepCopy()
      Description copied from interface: ISvgNodeRenderer
      Creates a deep copy of this renderer, including it's subtree of children
      Specified by:
      createDeepCopy in interface ISvgNodeRenderer
      Returns:
      deep copy of this renderer
    • calculateAndApplyViewBox

      void calculateAndApplyViewBox(SvgDrawContext context, float[] values, Rectangle currentViewPort)
    • isOverflowVisible

      private static boolean isOverflowVisible(AbstractSvgNodeRenderer currentElement)
    • getBBoxAccordingToVisibleOverflow

      private static Rectangle getBBoxAccordingToVisibleOverflow(SvgDrawContext context)
      When in the svg element overflow is visible the corresponding formXObject should have a BBox (form XObject’s bounding box; see PDF 32000-1:2008 - 8.10.2 Form Dictionaries) that should cover the entire svg space (page in pdf) in order to be able to show parts of the element which are outside the current element viewPort. To do this, we get the inverse matrix of all the current transformation matrix changes and apply it to the root viewPort. This allows you to get the root rectangle in the final coordinate system.
      Parameters:
      context - current context to get canvases and view ports
      Returns:
      the set to PdfStream bbox