Class AbstractSvgNodeRenderer

java.lang.Object
com.itextpdf.svg.renderers.impl.AbstractSvgNodeRenderer
All Implemented Interfaces:
ISvgNodeRenderer
Direct Known Subclasses:
AbstractBranchSvgNodeRenderer, EllipseSvgNodeRenderer, ImageSvgNodeRenderer, LineSvgNodeRenderer, PathSvgNodeRenderer, PolylineSvgNodeRenderer, RectangleSvgNodeRenderer, TextLeafSvgNodeRenderer, TextSvgBranchRenderer, UseSvgNodeRenderer

public abstract class AbstractSvgNodeRenderer extends Object implements ISvgNodeRenderer
ISvgNodeRenderer abstract implementation.
  • Field Details

    • attributesAndStyles

      protected Map<String,String> attributesAndStyles
      Map that contains attributes and styles used for drawing operations.
  • Constructor Details

    • AbstractSvgNodeRenderer

      public AbstractSvgNodeRenderer()
  • Method Details

    • setParent

      public void setParent (ISvgNodeRenderer parent)
      Description copied from interface: ISvgNodeRenderer
      Sets the parent of this renderer. The parent may be the source of inherited properties and default values.
      Specified by:
      setParent in interface ISvgNodeRenderer
      Parameters:
      parent - the parent renderer
    • getParent

      public ISvgNodeRenderer getParent()
      Description copied from interface: ISvgNodeRenderer
      Gets the parent of this renderer. The parent may be the source of inherited properties and default values.
      Specified by:
      getParent in interface ISvgNodeRenderer
      Returns:
      the parent renderer; null in case of a root node
    • setAttributesAndStyles

      public void setAttributesAndStyles (Map<String,String> attributesAndStyles)
      Description copied from interface: ISvgNodeRenderer
      Sets the map of XML node attributes and CSS style properties that this renderer needs.
      Specified by:
      setAttributesAndStyles in interface ISvgNodeRenderer
      Parameters:
      attributesAndStyles - the mapping from key names to values
    • getAttribute

      public String getAttribute (String key)
      Description copied from interface: ISvgNodeRenderer
      Retrieves the property value for a given key name.
      Specified by:
      getAttribute in interface ISvgNodeRenderer
      Parameters:
      key - the name of the property to search for
      Returns:
      the value for this key, or null
    • getAttributeOrDefault

      public String getAttributeOrDefault (String key, String defaultValue)
      Retrieves the property value for a given key name or default if the property value is null or missing.
      Parameters:
      key - the name of the property to search for
      defaultValue - the default value to be returned if the property is null or missing
      Returns:
      the value for this key, or defaultValue
    • setAttribute

      public void setAttribute (String key, String value)
      Description copied from interface: ISvgNodeRenderer
      Sets a property key and value pairs for a given attribute
      Specified by:
      setAttribute in interface ISvgNodeRenderer
      Parameters:
      key - the name of the attribute
      value - the value of the attribute
    • getAttributeMapCopy

      public Map<String,String> getAttributeMapCopy()
      Description copied from interface: ISvgNodeRenderer
      Get a modifiable copy of the style and attribute map
      Specified by:
      getAttributeMapCopy in interface ISvgNodeRenderer
      Returns:
      copy of the attributes and styles-map
    • draw

      public final void draw (SvgDrawContext context)
      Applies transformations set to this object, if any, and delegates the drawing of this element and its children to the doDraw method.
      Specified by:
      draw in interface ISvgNodeRenderer
      Parameters:
      context - the object that knows the place to draw this element and maintains its state
    • canElementFill

      protected boolean canElementFill()
      Method to see if a certain renderer can use fill.
      Returns:
      true if the renderer can use fill
    • canConstructViewPort

      public boolean canConstructViewPort()
      Method to see if the renderer can create a viewport
      Returns:
      true if the renderer can construct a viewport
    • getCurrentFontSize

      @Deprecated public float getCurrentFontSize()
      Deprecated.
      Return font-size of the current element in px.

      This method is deprecated in favour of getCurrentFontSize(SvgDrawContext) because current one can't support relative values (em, rem) and those can't be resolved without SvgDrawContext.

      Returns:
      absolute value of font-size
    • getCurrentFontSize

      public float getCurrentFontSize (SvgDrawContext context)
      Return font-size of the current element in px.
      Parameters:
      context - draw context from which root font size can be extracted
      Returns:
      absolute value of font-size
    • getCurrentViewBox

      public Rectangle getCurrentViewBox (SvgDrawContext context)
      Gets the viewbox from the first parent element which can define it.

      See SVG specification to find which elements can define a viewbox.

      Parameters:
      context - draw context from which fallback viewbox can be extracted
      Returns:
      the viewbox or null if the element doesn't have parent which can define the viewbox
    • deepCopyAttributesAndStyles

      protected void deepCopyAttributesAndStyles (ISvgNodeRenderer deepCopy)
      Make a deep copy of the styles and attributes of this renderer Helper method for deep copying logic
      Parameters:
      deepCopy - renderer to insert the deep copied attributes into
    • doDraw

      protected abstract void doDraw (SvgDrawContext context)
      Draws this element to a canvas-like object maintained in the context.
      Parameters:
      context - the object that knows the place to draw this element and maintains its state
    • isHidden

      protected boolean isHidden()
      Check if this renderer should draw the element based on its attributes (e.g. visibility/display)
      Returns:
      true if element won't be drawn, false otherwise
    • parseHorizontalLength

      protected float parseHorizontalLength (String length, SvgDrawContext context)
      Parse x-axis length value. If this method is called and there is no view port in SvgDrawContext, a default current viewport will be created. This can happen if svg is created manually (not through SvgImage or SvgImageXObject) and don't have PdfRootSvgNodeRenderer as its parent.
      Parameters:
      length - String length for parsing
      context - current SvgDrawContext instance
      Returns:
      absolute length in points
    • parseVerticalLength

      protected float parseVerticalLength (String length, SvgDrawContext context)
      Parse y-axis length value. If this method is called and there is no view port in SvgDrawContext, a default current viewport will be created. This can happen if svg is created manually (not through SvgImage or SvgImageXObject) and don't have PdfRootSvgNodeRenderer as its parent.
      Parameters:
      length - String length for parsing
      context - current SvgDrawContext instance
      Returns:
      absolute length in points
    • parseAbsoluteLength

      @Deprecated protected float parseAbsoluteLength (String length, float percentBaseValue, float defaultValue, SvgDrawContext context)
      Deprecated.
      Parse length attributes.

      This method is deprecated and SvgCssUtils.parseAbsoluteLength(AbstractSvgNodeRenderer, String, float, float, SvgDrawContext) should be used instead.

      Parameters:
      length - String for parsing
      percentBaseValue - the value on which percent length is based on
      defaultValue - default value if length is not recognized
      context - current SvgDrawContext
      Returns:
      absolute value in points