Class mxGraphicsCanvas2D

java.lang.Object
com.mxgraph.canvas.mxGraphicsCanvas2D
All Implemented Interfaces:
mxICanvas2D

public class mxGraphicsCanvas2D extends Object implements mxICanvas2D
Used for exporting images. To render to an image from a given XML string, graph size and background color, the following code is used: BufferedImage image = mxUtils.createBufferedImage(width, height, background); Graphics2D g2 = image.createGraphics(); mxUtils.setAntiAlias(g2, true, true); XMLReader reader = SAXParserFactory.newInstance().newSAXParser().getXMLReader(); reader.setContentHandler(new mxSaxOutputHandler(new mxGraphicsCanvas2D(g2))); reader.parse(new InputSource(new StringReader(xml))); Text rendering is available for plain text and HTML markup, the latter with optional word wrapping. CSS support is limited to the following: http://docs.oracle.com/javase/6/docs/api/index.html?javax/swing/text/html/CSS.html
  • Field Details

    • IMAGE_SCALING

      public static int IMAGE_SCALING
      Specifies the image scaling quality. Default is Image.SCALE_SMOOTH. See scaleImage(Image, int, int)
    • JAVA_TEXT_WIDTH_DELTA

      public static int JAVA_TEXT_WIDTH_DELTA
      Specifies the additional pixels when computing the text width for HTML labels. Default is 5.
    • HTML_SCALE

      public static double HTML_SCALE
      Scale for rendering HTML output. Default is 1.
    • HTML_UNIT

      public static String HTML_UNIT
      Unit to be used for HTML labels. Default is "pt". If you units within HTML labels are used, this should match those units to produce a consistent output. If the value is "px", then HTML_SCALE should be changed the match the ratio between px units for rendering HTML and the units used for rendering other graphics elements. This value is 0.6 on Linux and 0.75 on all other platforms.
    • COLOR_CACHE_SIZE

      public static int COLOR_CACHE_SIZE
      Specifies the size of the cache used to store parsed colors
    • graphics

      protected Graphics2D graphics
      Reference to the graphics instance for painting.
    • textEnabled

      protected boolean textEnabled
      Specifies if text output should be rendered. Default is true.
    • state

      protected transient mxGraphicsCanvas2D.CanvasState state
      Represents the current state of the canvas.
    • stack

      protected transient Stack<mxGraphicsCanvas2D.CanvasState> stack
      Stack of states for save/restore.
    • currentPath

      protected transient GeneralPath currentPath
      Holds the current path.
    • rendererPane

      protected CellRendererPane rendererPane
      Optional renderer pane to be used for HTML label rendering.
    • lastFont

      protected transient Font lastFont
      Font caching.
    • lastFontStyle

      protected transient int lastFontStyle
      Font caching.
    • lastFontSize

      protected transient int lastFontSize
      Font caching.
    • lastFontFamily

      protected transient String lastFontFamily
      Font caching.
    • lastStroke

      protected transient Stroke lastStroke
      Stroke caching.
    • lastStrokeWidth

      protected transient float lastStrokeWidth
      Stroke caching.
    • lastCap

      protected transient int lastCap
      Stroke caching.
    • lastJoin

      protected transient int lastJoin
      Stroke caching.
    • lastMiterLimit

      protected transient float lastMiterLimit
      Stroke caching.
    • lastDashed

      protected transient boolean lastDashed
      Stroke caching.
    • lastDashPattern

      protected transient Object lastDashPattern
      Stroke caching.
    • colorCache

      protected transient LinkedHashMap<String,Color> colorCache
      Caches parsed colors.
  • Constructor Details

    • mxGraphicsCanvas2D

      public mxGraphicsCanvas2D(Graphics2D g)
      Constructs a new graphics export canvas.
  • Method Details

    • setGraphics

      public void setGraphics(Graphics2D value)
      Sets the graphics instance.
    • getGraphics

      public Graphics2D getGraphics()
      Returns the graphics instance.
    • isTextEnabled

      public boolean isTextEnabled()
      Returns true if text should be rendered.
    • setTextEnabled

      public void setTextEnabled(boolean value)
      Disables or enables text rendering.
    • save

      public void save()
      Saves the current canvas state.
      Specified by:
      save in interface mxICanvas2D
    • restore

      public void restore()
      Restores the last canvas state.
      Specified by:
      restore in interface mxICanvas2D
    • cloneState

      Returns a clone of the given state.
    • scale

      public void scale(double value)
      Description copied from interface: mxICanvas2D
      Uniformaly scales the canvas by the given amount.
      Specified by:
      scale in interface mxICanvas2D
      Parameters:
      value - The new scale value.
    • translate

      public void translate(double dx, double dy)
      Description copied from interface: mxICanvas2D
      Translates the canvas by the given amount.
      Specified by:
      translate in interface mxICanvas2D
      Parameters:
      dx - X-coordinate of the translation.
      dy - Y-coordinate of the translation.
    • rotate

      public void rotate(double theta, boolean flipH, boolean flipV, double cx, double cy)
      Description copied from interface: mxICanvas2D
      Rotates the canvas by the given angle around the given center. This method may add rendering overhead and should be used with care.
      Specified by:
      rotate in interface mxICanvas2D
      Parameters:
      theta - Rotation angle in degrees (0 - 360).
      flipH - Specifies if drawing should be flipped horizontally.
      flipV - Specifies if drawing should be flipped vertically.
      cx - X-coordinate of the center point.
      cy - Y-coordinate of the center point.
    • setStrokeWidth

      public void setStrokeWidth(double value)
      Description copied from interface: mxICanvas2D
      Sets the stroke width. This should default to 1 if unset.
      Specified by:
      setStrokeWidth in interface mxICanvas2D
      Parameters:
      value - Width of the stroke. The value should be multiplied by the current scale.
    • setStrokeColor

      public void setStrokeColor(String value)
      Caches color conversion as it is expensive.
      Specified by:
      setStrokeColor in interface mxICanvas2D
      Parameters:
      value - Hex representation of the color or mxConstants.NONE.
    • setDashed

      public void setDashed(boolean value)
      Description copied from interface: mxICanvas2D
      Sets the dashed state. This should default to false if unset.
      Specified by:
      setDashed in interface mxICanvas2D
      Parameters:
      value - Boolean representing the dashed state.
    • setDashed

      public void setDashed(boolean value, boolean fixDash)
      Description copied from interface: mxICanvas2D
      Sets the dashed state. This should default to false if unset.
      Specified by:
      setDashed in interface mxICanvas2D
      Parameters:
      value - Boolean representing the dashed state.
    • setDashPattern

      public void setDashPattern(String value)
      Description copied from interface: mxICanvas2D
      Sets the dash pattern. This should default to "3 3" if unset.
      Specified by:
      setDashPattern in interface mxICanvas2D
      Parameters:
      value - Space separated list of floats representing the dash pattern. The value should be multiplied by the current scale.
    • setLineCap

      public void setLineCap(String value)
      Description copied from interface: mxICanvas2D
      Sets the linecap. This should default to "flat" if unset.
      Specified by:
      setLineCap in interface mxICanvas2D
      Parameters:
      value - "flat", "square" or "round".
    • setLineJoin

      public void setLineJoin(String value)
      Description copied from interface: mxICanvas2D
      Sets the linejoin. This should default to "miter" if unset.
      Specified by:
      setLineJoin in interface mxICanvas2D
      Parameters:
      value - "miter", "round" or "bevel".
    • setMiterLimit

      public void setMiterLimit(double value)
      Description copied from interface: mxICanvas2D
      Sets the miterlimit. This should default to 10 if unset.
      Specified by:
      setMiterLimit in interface mxICanvas2D
      Parameters:
      value -
    • setFontSize

      public void setFontSize(double value)
      Description copied from interface: mxICanvas2D
      Specified by:
      setFontSize in interface mxICanvas2D
      Parameters:
      value -
    • setFontColor

      public void setFontColor(String value)
      Description copied from interface: mxICanvas2D
      Default value "#000000".
      Specified by:
      setFontColor in interface mxICanvas2D
      Parameters:
      value - Hex representation of the color or mxConstants.NONE.
    • setFontBackgroundColor

      public void setFontBackgroundColor(String value)
      Description copied from interface: mxICanvas2D
      Default value "#000000".
      Specified by:
      setFontBackgroundColor in interface mxICanvas2D
      Parameters:
      value - Hex representation of the color or mxConstants.NONE.
    • setFontBorderColor

      public void setFontBorderColor(String value)
      Description copied from interface: mxICanvas2D
      Default value "#000000".
      Specified by:
      setFontBorderColor in interface mxICanvas2D
      Parameters:
      value - Hex representation of the color or mxConstants.NONE.
    • setFontFamily

      public void setFontFamily(String value)
      Description copied from interface: mxICanvas2D
      Specified by:
      setFontFamily in interface mxICanvas2D
      Parameters:
      value -
    • setFontStyle

      public void setFontStyle(int value)
      Description copied from interface: mxICanvas2D
      Default value 0. See mxConstants.STYLE_FONTSTYLE.
      Specified by:
      setFontStyle in interface mxICanvas2D
      Parameters:
      value -
    • setAlpha

      public void setAlpha(double value)
      Description copied from interface: mxICanvas2D
      Default value 1. This method may add rendering overhead and should be used with care.
      Specified by:
      setAlpha in interface mxICanvas2D
      Parameters:
      value -
    • setFillAlpha

      public void setFillAlpha(double value)
      Description copied from interface: mxICanvas2D
      Default value 1. This method may add rendering overhead and should be used with care.
      Specified by:
      setFillAlpha in interface mxICanvas2D
      Parameters:
      value -
    • setStrokeAlpha

      public void setStrokeAlpha(double value)
      Description copied from interface: mxICanvas2D
      Default value 1. This method may add rendering overhead and should be used with care.
      Specified by:
      setStrokeAlpha in interface mxICanvas2D
      Parameters:
      value -
    • setFillColor

      public void setFillColor(String value)
      Description copied from interface: mxICanvas2D
      Default value mxConstants.NONE.
      Specified by:
      setFillColor in interface mxICanvas2D
      Parameters:
      value - Hex representation of the color or mxConstants.NONE.
    • setGradient

      public void setGradient(String color1, String color2, double x, double y, double w, double h, String direction, double alpha1, double alpha2)
      Description copied from interface: mxICanvas2D
      Prepares the canvas to draw a gradient.
      Specified by:
      setGradient in interface mxICanvas2D
      Parameters:
      color1 -
      color2 -
      x -
      y -
      w -
      h -
      direction - Direction may be null. Use default value mxConstants.DIRECTION_SOUTH.
    • parseColor

      protected Color parseColor(String hex)
      Helper method that uses mxUtils.parseColor(String).
    • parseColor

      protected Color parseColor(String hex, double alpha)
      Helper method that uses mxUtils.parseColor(String).
    • rect

      public void rect(double x, double y, double w, double h)
      Description copied from interface: mxICanvas2D
      Next fill or stroke should draw a rectangle.
      Specified by:
      rect in interface mxICanvas2D
      Parameters:
      x -
      y -
      w -
      h -
    • roundrect

      public void roundrect(double x, double y, double w, double h, double dx, double dy)
      Implements a rounded rectangle using a path.
      Specified by:
      roundrect in interface mxICanvas2D
      Parameters:
      x -
      y -
      w -
      h -
      dx -
      dy -
    • ellipse

      public void ellipse(double x, double y, double w, double h)
      Description copied from interface: mxICanvas2D
      Next fill or stroke should draw an ellipse.
      Specified by:
      ellipse in interface mxICanvas2D
      Parameters:
      x -
      y -
      w -
      h -
    • image

      public void image(double x, double y, double w, double h, String src, boolean aspect, boolean flipH, boolean flipV)
      Description copied from interface: mxICanvas2D
      Draws the given image.
      Specified by:
      image in interface mxICanvas2D
      Parameters:
      x -
      y -
      w -
      h -
      src -
      aspect -
      flipH -
      flipV -
    • drawImage

      protected void drawImage(Graphics2D graphics, Image image, int x, int y)
    • loadImage

      protected Image loadImage(String src)
      Hook for image caching.
    • getImageBounds

      protected final Rectangle getImageBounds(Image img, double x, double y, double w, double h, boolean aspect)
    • getImageSize

      protected Dimension getImageSize(Image image)
      Returns the size for the given image.
    • scaleImage

      protected Image scaleImage(Image img, int w, int h)
      Uses IMAGE_SCALING to scale the given image.
    • createImageGraphics

      protected final Graphics2D createImageGraphics(double x, double y, double w, double h, boolean flipH, boolean flipV)
      Creates a graphic instance for rendering an image.
    • createHtmlDocument

      protected String createHtmlDocument(String text, String align, String valign, int w, int h, boolean wrap, String overflow, boolean clip)
      Creates a HTML document around the given markup.
    • createHtmlDocument

      protected String createHtmlDocument(String text, String style)
      Creates a HTML document for the given text and CSS style.
    • getTextRenderer

      protected JLabel getTextRenderer()
      Hook to return the renderer for HTML formatted text. This implementation returns the shared instance of mxLighweightLabel.
    • getMargin

      protected Point2D getMargin(String align, String valign)
    • htmlText

      protected void htmlText(double x, double y, double w, double h, String str, String align, String valign, boolean wrap, String format, String overflow, boolean clip, double rotation)
      Draws the given HTML text.
    • text

      public void text(double x, double y, double w, double h, String str, String align, String valign, boolean wrap, String format, String overflow, boolean clip, double rotation, String textDirection)
      Draws the given text.
      Specified by:
      text in interface mxICanvas2D
      Parameters:
      x -
      y -
      w -
      h -
      str -
      align -
      valign -
      wrap -
      format -
      overflow -
      clip -
      rotation -
      textDirection -
    • plainText

      public void plainText(double x, double y, double w, double h, String str, String align, String valign, boolean wrap, String format, String overflow, boolean clip, double rotation)
      Draws the given text.
    • createTextGraphics

      protected final Graphics2D createTextGraphics(double x, double y, double w, double h, double rotation, boolean clip, String align, String valign)
      Returns a new graphics instance with the correct color and font for text rendering.
    • begin

      public void begin()
      Description copied from interface: mxICanvas2D
      Begins a new path.
      Specified by:
      begin in interface mxICanvas2D
    • moveTo

      public void moveTo(double x, double y)
      Description copied from interface: mxICanvas2D
      Moves to the given path.
      Specified by:
      moveTo in interface mxICanvas2D
      Parameters:
      x -
      y -
    • lineTo

      public void lineTo(double x, double y)
      Description copied from interface: mxICanvas2D
      Draws a line to the given path.
      Specified by:
      lineTo in interface mxICanvas2D
      Parameters:
      x -
      y -
    • quadTo

      public void quadTo(double x1, double y1, double x2, double y2)
      Description copied from interface: mxICanvas2D
      Draws a quadratic curve to the given point.
      Specified by:
      quadTo in interface mxICanvas2D
      Parameters:
      x1 -
      y1 -
      x2 -
      y2 -
    • curveTo

      public void curveTo(double x1, double y1, double x2, double y2, double x3, double y3)
      Description copied from interface: mxICanvas2D
      Draws a bezier curve to the given point.
      Specified by:
      curveTo in interface mxICanvas2D
      Parameters:
      x1 -
      y1 -
      x2 -
      y2 -
      x3 -
      y3 -
    • close

      public void close()
      Closes the current path.
      Specified by:
      close in interface mxICanvas2D
    • stroke

      public void stroke()
      Description copied from interface: mxICanvas2D
      Paints the outline of the current path.
      Specified by:
      stroke in interface mxICanvas2D
    • fill

      public void fill()
      Description copied from interface: mxICanvas2D
      Fills the current path.
      Specified by:
      fill in interface mxICanvas2D
    • fillAndStroke

      public void fillAndStroke()
      Description copied from interface: mxICanvas2D
      Fills and paints the outline of the current path.
      Specified by:
      fillAndStroke in interface mxICanvas2D
    • paintCurrentPath

      protected void paintCurrentPath(boolean filled, boolean stroked)
    • paintShadow

      protected void paintShadow(boolean filled, boolean stroked)
    • setShadow

      public void setShadow(boolean value)
      Description copied from interface: mxICanvas2D
      Enables or disables the painting of shadows.
      Specified by:
      setShadow in interface mxICanvas2D
      Parameters:
      value - Whether the shadow should be enabled.
    • setShadowColor

      public void setShadowColor(String value)
      Description copied from interface: mxICanvas2D
      Default value mxConstants.NONE.
      Specified by:
      setShadowColor in interface mxICanvas2D
      Parameters:
      value - Hex representation of the color or mxConstants.NONE.
    • setShadowAlpha

      public void setShadowAlpha(double value)
      Description copied from interface: mxICanvas2D
      Default value mxConstants.NONE.
      Specified by:
      setShadowAlpha in interface mxICanvas2D
      Parameters:
      value - Hex representation of the color or mxConstants.NONE.
    • setShadowOffset

      public void setShadowOffset(double dx, double dy)
      Description copied from interface: mxICanvas2D
      Default value mxConstants.NONE.
      Specified by:
      setShadowOffset in interface mxICanvas2D
    • updateFont

      protected void updateFont()
    • createFont

      protected Font createFont(String family, int style, int size)
      Hook for subclassers to implement font caching.
    • getFontName

      protected String getFontName(String family)
      Returns a font name for the given CSS values for font-family. This implementation returns the first entry for comma-separated lists of entries.
    • updateStroke

      protected void updateStroke()