Package com.mxgraph.canvas
Class mxGraphicsCanvas2D
java.lang.Object
com.mxgraph.canvas.mxGraphicsCanvas2D
- All Implemented Interfaces:
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-
Nested Class Summary
Nested Classes -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic int
Specifies the size of the cache used to store parsed colorsprotected LinkedHashMap
<String, Color> Caches parsed colors.protected GeneralPath
Holds the current path.protected Graphics2D
Reference to the graphics instance for painting.static double
Scale for rendering HTML output.static String
Unit to be used for HTML labels.static int
Specifies the image scaling quality.static int
Specifies the additional pixels when computing the text width for HTML labels.protected int
Stroke caching.protected boolean
Stroke caching.protected Object
Stroke caching.protected Font
Font caching.protected String
Font caching.protected int
Font caching.protected int
Font caching.protected int
Stroke caching.protected float
Stroke caching.protected Stroke
Stroke caching.protected float
Stroke caching.protected CellRendererPane
Optional renderer pane to be used for HTML label rendering.protected Stack
<mxGraphicsCanvas2D.CanvasState> Stack of states for save/restore.protected mxGraphicsCanvas2D.CanvasState
Represents the current state of the canvas.protected boolean
Specifies if text output should be rendered. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
begin()
Begins a new path.protected mxGraphicsCanvas2D.CanvasState
Returns a clone of the given state.void
close()
Closes the current path.protected Font
createFont
(String family, int style, int size) Hook for subclassers to implement font caching.protected String
createHtmlDocument
(String text, String style) Creates a HTML document for the given text and CSS style.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.protected final Graphics2D
createImageGraphics
(double x, double y, double w, double h, boolean flipH, boolean flipV) Creates a graphic instance for rendering an image.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.void
curveTo
(double x1, double y1, double x2, double y2, double x3, double y3) Draws a bezier curve to the given point.protected void
drawImage
(Graphics2D graphics, Image image, int x, int y) void
ellipse
(double x, double y, double w, double h) Next fill or stroke should draw an ellipse.void
fill()
Fills the current path.void
Fills and paints the outline of the current path.protected String
getFontName
(String family) Returns a font name for the given CSS values for font-family.Returns the graphics instance.protected final Rectangle
getImageBounds
(Image img, double x, double y, double w, double h, boolean aspect) protected Dimension
getImageSize
(Image image) Returns the size for the given image.protected Point2D
protected JLabel
Hook to return the renderer for HTML formatted text.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.void
image
(double x, double y, double w, double h, String src, boolean aspect, boolean flipH, boolean flipV) Draws the given image.boolean
Returns true if text should be rendered.void
lineTo
(double x, double y) Draws a line to the given path.protected Image
Hook for image caching.void
moveTo
(double x, double y) Moves to the given path.protected void
paintCurrentPath
(boolean filled, boolean stroked) protected void
paintShadow
(boolean filled, boolean stroked) protected Color
parseColor
(String hex) Helper method that usesmxUtils.parseColor(String)
.protected Color
parseColor
(String hex, double alpha) Helper method that usesmxUtils.parseColor(String)
.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.void
quadTo
(double x1, double y1, double x2, double y2) Draws a quadratic curve to the given point.void
rect
(double x, double y, double w, double h) Next fill or stroke should draw a rectangle.void
restore()
Restores the last canvas state.void
rotate
(double theta, boolean flipH, boolean flipV, double cx, double cy) Rotates the canvas by the given angle around the given center.void
roundrect
(double x, double y, double w, double h, double dx, double dy) Implements a rounded rectangle using a path.void
save()
Saves the current canvas state.void
scale
(double value) Uniformaly scales the canvas by the given amount.protected Image
scaleImage
(Image img, int w, int h) UsesIMAGE_SCALING
to scale the given image.void
setAlpha
(double value) Default value 1.void
setDashed
(boolean value) Sets the dashed state.void
setDashed
(boolean value, boolean fixDash) Sets the dashed state.void
setDashPattern
(String value) Sets the dash pattern.void
setFillAlpha
(double value) Default value 1.void
setFillColor
(String value) Default valuemxConstants.NONE
.void
setFontBackgroundColor
(String value) Default value "#000000".void
setFontBorderColor
(String value) Default value "#000000".void
setFontColor
(String value) Default value "#000000".void
setFontFamily
(String value) Default valuemxConstants.DEFAULT_FONTFAMILY
.void
setFontSize
(double value) Default valuemxConstants.DEFAULT_FONTSIZE
.void
setFontStyle
(int value) Default value 0.void
setGradient
(String color1, String color2, double x, double y, double w, double h, String direction, double alpha1, double alpha2) Prepares the canvas to draw a gradient.void
setGraphics
(Graphics2D value) Sets the graphics instance.void
setLineCap
(String value) Sets the linecap.void
setLineJoin
(String value) Sets the linejoin.void
setMiterLimit
(double value) Sets the miterlimit.void
setShadow
(boolean value) Enables or disables the painting of shadows.void
setShadowAlpha
(double value) Default valuemxConstants.NONE
.void
setShadowColor
(String value) Default valuemxConstants.NONE
.void
setShadowOffset
(double dx, double dy) Default valuemxConstants.NONE
.void
setStrokeAlpha
(double value) Default value 1.void
setStrokeColor
(String value) Caches color conversion as it is expensive.void
setStrokeWidth
(double value) Sets the stroke width.void
setTextEnabled
(boolean value) Disables or enables text rendering.void
stroke()
Paints the outline of the current path.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.void
translate
(double dx, double dy) Translates the canvas by the given amount.protected void
protected void
-
Field Details
-
IMAGE_SCALING
public static int IMAGE_SCALINGSpecifies the image scaling quality. Default is Image.SCALE_SMOOTH. SeescaleImage(Image, int, int)
-
JAVA_TEXT_WIDTH_DELTA
public static int JAVA_TEXT_WIDTH_DELTASpecifies the additional pixels when computing the text width for HTML labels. Default is 5. -
HTML_SCALE
public static double HTML_SCALEScale for rendering HTML output. Default is 1. -
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_SIZESpecifies the size of the cache used to store parsed colors -
graphics
Reference to the graphics instance for painting. -
textEnabled
protected boolean textEnabledSpecifies if text output should be rendered. Default is true. -
state
Represents the current state of the canvas. -
stack
Stack of states for save/restore. -
currentPath
Holds the current path. -
rendererPane
Optional renderer pane to be used for HTML label rendering. -
lastFont
Font caching. -
lastFontStyle
protected transient int lastFontStyleFont caching. -
lastFontSize
protected transient int lastFontSizeFont caching. -
lastFontFamily
Font caching. -
lastStroke
Stroke caching. -
lastStrokeWidth
protected transient float lastStrokeWidthStroke caching. -
lastCap
protected transient int lastCapStroke caching. -
lastJoin
protected transient int lastJoinStroke caching. -
lastMiterLimit
protected transient float lastMiterLimitStroke caching. -
lastDashed
protected transient boolean lastDashedStroke caching. -
lastDashPattern
Stroke caching. -
colorCache
Caches parsed colors.
-
-
Constructor Details
-
mxGraphicsCanvas2D
Constructs a new graphics export canvas.
-
-
Method Details
-
setGraphics
Sets the graphics instance. -
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 interfacemxICanvas2D
-
restore
public void restore()Restores the last canvas state.- Specified by:
restore
in interfacemxICanvas2D
-
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 interfacemxICanvas2D
- 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 interfacemxICanvas2D
- 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 interfacemxICanvas2D
- 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 interfacemxICanvas2D
- Parameters:
value
- Width of the stroke. The value should be multiplied by the current scale.
-
setStrokeColor
Caches color conversion as it is expensive.- Specified by:
setStrokeColor
in interfacemxICanvas2D
- Parameters:
value
- Hex representation of the color ormxConstants.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 interfacemxICanvas2D
- 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 interfacemxICanvas2D
- Parameters:
value
- Boolean representing the dashed state.
-
setDashPattern
Description copied from interface:mxICanvas2D
Sets the dash pattern. This should default to "3 3" if unset.- Specified by:
setDashPattern
in interfacemxICanvas2D
- Parameters:
value
- Space separated list of floats representing the dash pattern. The value should be multiplied by the current scale.
-
setLineCap
Description copied from interface:mxICanvas2D
Sets the linecap. This should default to "flat" if unset.- Specified by:
setLineCap
in interfacemxICanvas2D
- Parameters:
value
- "flat", "square" or "round".
-
setLineJoin
Description copied from interface:mxICanvas2D
Sets the linejoin. This should default to "miter" if unset.- Specified by:
setLineJoin
in interfacemxICanvas2D
- 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 interfacemxICanvas2D
- Parameters:
value
-
-
setFontSize
public void setFontSize(double value) Description copied from interface:mxICanvas2D
Default valuemxConstants.DEFAULT_FONTSIZE
.- Specified by:
setFontSize
in interfacemxICanvas2D
- Parameters:
value
-
-
setFontColor
Description copied from interface:mxICanvas2D
Default value "#000000".- Specified by:
setFontColor
in interfacemxICanvas2D
- Parameters:
value
- Hex representation of the color ormxConstants.NONE
.
-
setFontBackgroundColor
Description copied from interface:mxICanvas2D
Default value "#000000".- Specified by:
setFontBackgroundColor
in interfacemxICanvas2D
- Parameters:
value
- Hex representation of the color ormxConstants.NONE
.
-
setFontBorderColor
Description copied from interface:mxICanvas2D
Default value "#000000".- Specified by:
setFontBorderColor
in interfacemxICanvas2D
- Parameters:
value
- Hex representation of the color ormxConstants.NONE
.
-
setFontFamily
Description copied from interface:mxICanvas2D
Default valuemxConstants.DEFAULT_FONTFAMILY
.- Specified by:
setFontFamily
in interfacemxICanvas2D
- Parameters:
value
-
-
setFontStyle
public void setFontStyle(int value) Description copied from interface:mxICanvas2D
Default value 0. SeemxConstants.STYLE_FONTSTYLE
.- Specified by:
setFontStyle
in interfacemxICanvas2D
- 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 interfacemxICanvas2D
- 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 interfacemxICanvas2D
- 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 interfacemxICanvas2D
- Parameters:
value
-
-
setFillColor
Description copied from interface:mxICanvas2D
Default valuemxConstants.NONE
.- Specified by:
setFillColor
in interfacemxICanvas2D
- Parameters:
value
- Hex representation of the color ormxConstants.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 interfacemxICanvas2D
- Parameters:
color1
-color2
-x
-y
-w
-h
-direction
- Direction may be null. Use default valuemxConstants.DIRECTION_SOUTH
.
-
parseColor
Helper method that usesmxUtils.parseColor(String)
. -
parseColor
Helper method that usesmxUtils.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 interfacemxICanvas2D
- 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 interfacemxICanvas2D
- 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 interfacemxICanvas2D
- 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 interfacemxICanvas2D
- Parameters:
x
-y
-w
-h
-src
-aspect
-flipH
-flipV
-
-
drawImage
-
loadImage
Hook for image caching. -
getImageBounds
-
getImageSize
Returns the size for the given image. -
scaleImage
UsesIMAGE_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
Creates a HTML document for the given text and CSS style. -
getTextRenderer
Hook to return the renderer for HTML formatted text. This implementation returns the shared instance of mxLighweightLabel. -
getMargin
-
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 interfacemxICanvas2D
- 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 interfacemxICanvas2D
-
moveTo
public void moveTo(double x, double y) Description copied from interface:mxICanvas2D
Moves to the given path.- Specified by:
moveTo
in interfacemxICanvas2D
- 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 interfacemxICanvas2D
- 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 interfacemxICanvas2D
- 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 interfacemxICanvas2D
- Parameters:
x1
-y1
-x2
-y2
-x3
-y3
-
-
close
public void close()Closes the current path.- Specified by:
close
in interfacemxICanvas2D
-
stroke
public void stroke()Description copied from interface:mxICanvas2D
Paints the outline of the current path.- Specified by:
stroke
in interfacemxICanvas2D
-
fill
public void fill()Description copied from interface:mxICanvas2D
Fills the current path.- Specified by:
fill
in interfacemxICanvas2D
-
fillAndStroke
public void fillAndStroke()Description copied from interface:mxICanvas2D
Fills and paints the outline of the current path.- Specified by:
fillAndStroke
in interfacemxICanvas2D
-
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 interfacemxICanvas2D
- Parameters:
value
- Whether the shadow should be enabled.
-
setShadowColor
Description copied from interface:mxICanvas2D
Default valuemxConstants.NONE
.- Specified by:
setShadowColor
in interfacemxICanvas2D
- Parameters:
value
- Hex representation of the color ormxConstants.NONE
.
-
setShadowAlpha
public void setShadowAlpha(double value) Description copied from interface:mxICanvas2D
Default valuemxConstants.NONE
.- Specified by:
setShadowAlpha
in interfacemxICanvas2D
- Parameters:
value
- Hex representation of the color ormxConstants.NONE
.
-
setShadowOffset
public void setShadowOffset(double dx, double dy) Description copied from interface:mxICanvas2D
Default valuemxConstants.NONE
.- Specified by:
setShadowOffset
in interfacemxICanvas2D
-
updateFont
protected void updateFont() -
createFont
Hook for subclassers to implement font caching. -
getFontName
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()
-