Class SVGCanvas

java.lang.Object
net.codecrete.qrbill.canvas.AbstractCanvas
net.codecrete.qrbill.canvas.SVGCanvas
All Implemented Interfaces:
Closeable, AutoCloseable, ByteArrayResult, Canvas

public class SVGCanvas extends AbstractCanvas implements ByteArrayResult
Canvas for generating SVG files.
  • Nested Class Summary

    Nested classes/interfaces inherited from interface net.codecrete.qrbill.canvas.Canvas

    Canvas.LineStyle
  • Field Summary

    Fields inherited from class net.codecrete.qrbill.canvas.AbstractCanvas

    fontMetrics, MM_TO_PT
  • Constructor Summary

    Constructors
    Constructor
    Description
    SVGCanvas(double width, double height, String fontFamilyList)
    Creates a new instance of the specified size.
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    addRectangle(double x, double y, double width, double height)
    Adds a rectangle to the path
    void
     
    void
    Closes the current subpath
    void
    cubicCurveTo(double x1, double y1, double x2, double y2, double x, double y)
    Adds a cubic Beziér curve to the open path going from the previous point to the specified position.
    void
    fillPath(int color, boolean smoothing)
    Fills the current path and ends it
    void
    lineTo(double x, double y)
    Adds a line segment to the open path from the previous point to the specified position.
    void
    moveTo(double x, double y)
    Moves the current point of the open path to the specified position.
    void
    putText(String text, double x, double y, int fontSize, boolean isBold)
    Adds text to the graphics.
    void
    saveAs(Path path)
    Saves the resulting SVG image to the specified path.
    void
    setTransformation(double translateX, double translateY, double rotate, double scaleX, double scaleY)
    Sets a translation, rotation and scaling for the subsequent operations
    void
    Starts a path that can be filled or stroked
    void
    strokePath(double strokeWidth, int color, Canvas.LineStyle lineStyle, boolean smoothing)
    Strokes the current path and ends it
    byte[]
    Gets the resulting graphics as a byte array.
    void
    Writes the resulting SVG image to the specified output stream.

    Methods inherited from class net.codecrete.qrbill.canvas.AbstractCanvas

    getAscender, getDescender, getLineHeight, getTextWidth, putTextLines, setupFontMetrics, splitLines

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • SVGCanvas

      public SVGCanvas(double width, double height, String fontFamilyList) throws IOException
      Creates a new instance of the specified size.

      For all text, the specified font family list will be used.

      Parameters:
      width - width of image, in mm
      height - height of image, in mm
      fontFamilyList - font family list (comma separated list, CSS syntax)
      Throws:
      IOException - thrown if the instance cannot be created
  • Method Details

    • close

      public void close() throws IOException
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable
      Throws:
      IOException
    • startPath

      public void startPath() throws IOException
      Description copied from interface: Canvas
      Starts a path that can be filled or stroked
      Specified by:
      startPath in interface Canvas
      Throws:
      IOException - thrown if the graphics cannot be generated
    • moveTo

      public void moveTo(double x, double y) throws IOException
      Description copied from interface: Canvas
      Moves the current point of the open path to the specified position.
      Specified by:
      moveTo in interface Canvas
      Parameters:
      x - x-coordinate of position
      y - y-coordinate of position
      Throws:
      IOException - thrown if the graphics cannot be generated
    • lineTo

      public void lineTo(double x, double y) throws IOException
      Description copied from interface: Canvas
      Adds a line segment to the open path from the previous point to the specified position.
      Specified by:
      lineTo in interface Canvas
      Parameters:
      x - x-coordinate of position
      y - y-coordinate of position
      Throws:
      IOException - thrown if the graphics cannot be generated
    • cubicCurveTo

      public void cubicCurveTo(double x1, double y1, double x2, double y2, double x, double y) throws IOException
      Description copied from interface: Canvas
      Adds a cubic Beziér curve to the open path going from the previous point to the specified position. Two control points control the curve
      Specified by:
      cubicCurveTo in interface Canvas
      Parameters:
      x1 - x-coordinate of first control point
      y1 - y-coordinate of first control point
      x2 - x-coordinate of second control point
      y2 - y-coordinate of second control point
      x - x-coordinate of position
      y - y-coordinate of position
      Throws:
      IOException - thrown if the graphics cannot be generated
    • addRectangle

      public void addRectangle(double x, double y, double width, double height) throws IOException
      Description copied from interface: Canvas
      Adds a rectangle to the path
      Specified by:
      addRectangle in interface Canvas
      Parameters:
      x - the rectangle's left position (in mm)
      y - the rectangle's top position (in mm)
      width - the rectangle's width (in mm)
      height - rectangle's height (in mm)
      Throws:
      IOException - thrown if the graphics cannot be generated
    • closeSubpath

      public void closeSubpath() throws IOException
      Description copied from interface: Canvas
      Closes the current subpath
      Specified by:
      closeSubpath in interface Canvas
      Throws:
      IOException - thrown if the graphics cannot be generated
    • fillPath

      public void fillPath(int color, boolean smoothing) throws IOException
      Description copied from interface: Canvas
      Fills the current path and ends it
      Specified by:
      fillPath in interface Canvas
      Parameters:
      color - the fill color (expressed similar to HTML, e.g. 0xffffff for white)
      smoothing - true for using smoothing techniques such as antialiasing, false otherwise
      Throws:
      IOException - thrown if the graphics cannot be generated
    • strokePath

      public void strokePath(double strokeWidth, int color, Canvas.LineStyle lineStyle, boolean smoothing) throws IOException
      Description copied from interface: Canvas
      Strokes the current path and ends it
      Specified by:
      strokePath in interface Canvas
      Parameters:
      strokeWidth - the stroke width (in pt)
      color - the stroke color (expressed similar to HTML, e.g. 0xffffff for white)
      lineStyle - the line style
      smoothing - true for using smoothing techniques such as antialiasing, false otherwise
      Throws:
      IOException - thrown if the graphics cannot be generated
    • putText

      public void putText(String text, double x, double y, int fontSize, boolean isBold) throws IOException
      Description copied from interface: Canvas
      Adds text to the graphics.

      The text position refers to the left most point on the text's baseline.

      Specified by:
      putText in interface Canvas
      Parameters:
      text - the text
      x - x position of the text's start (in mm)
      y - y position of the text's top (in mm)
      fontSize - the font size (in pt)
      isBold - indicates if the text is in bold or regular weight
      Throws:
      IOException - thrown if the graphics cannot be generated
    • setTransformation

      public void setTransformation(double translateX, double translateY, double rotate, double scaleX, double scaleY) throws IOException
      Description copied from interface: Canvas
      Sets a translation, rotation and scaling for the subsequent operations

      Before a new translation is applied, the coordinate system is reset to it's original state.

      The transformations are applied in the order translation, rotation, scaling.

      Specified by:
      setTransformation in interface Canvas
      Parameters:
      translateX - translation in x direction (in mm)
      translateY - translation in y direction (in mm)
      rotate - rotation angle, in radians
      scaleX - scale factor in x direction (1.0 = no scaling)
      scaleY - scale factor in y direction (1.0 = no scaling)
      Throws:
      IOException - thrown if the graphics cannot be generated
    • toByteArray

      public byte[] toByteArray() throws IOException
      Description copied from interface: ByteArrayResult
      Gets the resulting graphics as a byte array.
      Specified by:
      toByteArray in interface ByteArrayResult
      Returns:
      the byte array
      Throws:
      IOException - thrown if the construction of the byte array fails
    • writeTo

      public void writeTo(OutputStream os) throws IOException
      Writes the resulting SVG image to the specified output stream.
      Parameters:
      os - the output stream
      Throws:
      IOException - thrown if the image cannot be written
    • saveAs

      public void saveAs(Path path) throws IOException
      Saves the resulting SVG image to the specified path.
      Parameters:
      path - the path to write to
      Throws:
      IOException - thrown if the image cannot be written