Package elki.visualization.svg
Class SVGUtil
- java.lang.Object
-
- elki.visualization.svg.SVGUtil
-
public final class SVGUtil extends java.lang.Object
Utility class for SVG processing. Much of the classes are to allow easier attribute setting (conversion to string) and Namespace handling- Since:
- 0.2
- Author:
- Erich Schubert
-
-
Field Summary
Fields Modifier and Type Field Description private static javax.swing.text.html.StyleSheet
colorLookupStylesheet
CSS Stylesheet from Javax, to parse color values.static java.text.NumberFormat
FMT
Formatter to output numbers in a valid SVG number format.static java.lang.String
HOURGLASS_PATH
Hourglass object.static java.lang.String
HOURGLASS_STYLE
Hourglass style.private static int
NO_VALUE
Key not found value.private static it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap<java.lang.String>
SVG_COLOR_NAMES
SVG color names conversion.static java.lang.String
THROBBER_PATH
Throbber path.static java.lang.String
THROBBER_STYLE
Throbber style.
-
Constructor Summary
Constructors Modifier Constructor Description private
SVGUtil()
Private constructor.
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static void
addCSSClass(org.w3c.dom.Element e, java.lang.String cssclass)
Add a CSS class to an Element.static java.lang.String
colorToString(int col)
Convert a color name from an integer RGB color to CSS syntaxstatic java.lang.String
colorToString(java.awt.Color col)
Convert a color name from an AWT color object to CSS syntaxstatic org.w3c.dom.svg.SVGPoint
elementCoordinatesFromEvent(org.w3c.dom.Document doc, org.w3c.dom.Element tag, org.w3c.dom.events.Event evt)
Convert the coordinates of an DOM Event from screen into element coordinates.static java.lang.String
fmt(double x)
Format a double according to the SVG specs.static java.lang.String
makeMarginTransform(double owidth, double oheight, double iwidth, double iheight, double margin)
Make a transform string to add marginsstatic java.lang.String
makeMarginTransform(double owidth, double oheight, double iwidth, double iheight, double xmargin, double ymargin)
Make a transform string to add marginsstatic java.lang.String
makeMarginTransform(double owidth, double oheight, double iwidth, double iheight, double lmargin, double tmargin, double rmargin, double bmargin)
Make a transform string to add marginsstatic org.w3c.dom.Element
makeStyleElement(org.w3c.dom.Document document)
Make a new CSS style element for the given Document.static void
removeCSSClass(org.w3c.dom.Element e, java.lang.String cssclass)
Remove a CSS class from an Element.static void
removeFromParent(org.w3c.dom.Element elem)
Remove an element from its parent, if defined.static void
removeLastChild(org.w3c.dom.Element tag)
Remove last child of an element, when presentstatic void
setAtt(org.w3c.dom.Element el, java.lang.String name, double d)
Set a SVG attributestatic void
setAtt(org.w3c.dom.Element el, java.lang.String name, int d)
Set a SVG attributestatic void
setAtt(org.w3c.dom.Element el, java.lang.String name, java.lang.String d)
Set a SVG attributestatic void
setCSSClass(org.w3c.dom.Element e, java.lang.String cssclass)
Set the CSS class of an Element.static void
setStyle(org.w3c.dom.Element el, java.lang.String d)
Set a SVG style attributestatic java.awt.Color
stringToColor(java.lang.String str)
Convert a color name from SVG syntax to an AWT color object.static org.w3c.dom.Element
svgCircle(org.w3c.dom.Document document, double cx, double cy, double r)
Create a SVG circle element.static org.w3c.dom.Element
svgCircleSegment(SVGPlot svgp, double centerx, double centery, double angleStart, double angleDelta, double innerRadius, double outerRadius)
Create a circle segment.static org.w3c.dom.Element
svgElement(org.w3c.dom.Document document, java.lang.String name)
Create a SVG element in appropriate namespacestatic org.w3c.dom.Element
svgLine(org.w3c.dom.Document document, double x1, double y1, double x2, double y2)
Create a SVG line element.static org.w3c.dom.Element
svgRect(org.w3c.dom.Document document, double x, double y, double w, double h)
Create a SVG rectangle element.static org.w3c.dom.Element
svgText(org.w3c.dom.Document document, double x, double y, java.lang.String text)
Create a SVG text element.static org.w3c.dom.Element
svgWaitIcon(org.w3c.dom.Document document, double x, double y, double w, double h)
Draw a simple "please wait" icon (in-progress) as placeholder for running renderings.
-
-
-
Field Detail
-
FMT
public static final java.text.NumberFormat FMT
Formatter to output numbers in a valid SVG number format.
-
HOURGLASS_PATH
public static final java.lang.String HOURGLASS_PATH
Hourglass object.- See Also:
- Constant Field Values
-
HOURGLASS_STYLE
public static final java.lang.String HOURGLASS_STYLE
Hourglass style.- See Also:
- Constant Field Values
-
THROBBER_PATH
public static final java.lang.String THROBBER_PATH
Throbber path.- See Also:
- Constant Field Values
-
THROBBER_STYLE
public static final java.lang.String THROBBER_STYLE
Throbber style.- See Also:
- Constant Field Values
-
SVG_COLOR_NAMES
private static final it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap<java.lang.String> SVG_COLOR_NAMES
SVG color names conversion.
-
NO_VALUE
private static final int NO_VALUE
Key not found value. Not a reasonable color, fully transparent!- See Also:
- Constant Field Values
-
colorLookupStylesheet
private static final javax.swing.text.html.StyleSheet colorLookupStylesheet
CSS Stylesheet from Javax, to parse color values.
-
-
Method Detail
-
fmt
public static java.lang.String fmt(double x)
Format a double according to the SVG specs.- Parameters:
x
- number to format- Returns:
- String representation
-
svgElement
public static org.w3c.dom.Element svgElement(org.w3c.dom.Document document, java.lang.String name)
Create a SVG element in appropriate namespace- Parameters:
document
- containing documentname
- node name- Returns:
- new SVG element.
-
setAtt
public static void setAtt(org.w3c.dom.Element el, java.lang.String name, double d)
Set a SVG attribute- Parameters:
el
- elementname
- attribute named
- double value
-
setAtt
public static void setAtt(org.w3c.dom.Element el, java.lang.String name, int d)
Set a SVG attribute- Parameters:
el
- elementname
- attribute named
- integer value
-
setAtt
public static void setAtt(org.w3c.dom.Element el, java.lang.String name, java.lang.String d)
Set a SVG attribute- Parameters:
el
- elementname
- attribute named
- string value
-
setStyle
public static void setStyle(org.w3c.dom.Element el, java.lang.String d)
Set a SVG style attribute- Parameters:
el
- elementd
- style value
-
setCSSClass
public static void setCSSClass(org.w3c.dom.Element e, java.lang.String cssclass)
Set the CSS class of an Element. See alsoaddCSSClass(org.w3c.dom.Element, java.lang.String)
andremoveCSSClass(org.w3c.dom.Element, java.lang.String)
.- Parameters:
e
- Elementcssclass
- class to set.
-
addCSSClass
public static void addCSSClass(org.w3c.dom.Element e, java.lang.String cssclass)
Add a CSS class to an Element.- Parameters:
e
- Elementcssclass
- class to add.
-
removeCSSClass
public static void removeCSSClass(org.w3c.dom.Element e, java.lang.String cssclass)
Remove a CSS class from an Element.- Parameters:
e
- Elementcssclass
- class to remove.
-
makeStyleElement
public static org.w3c.dom.Element makeStyleElement(org.w3c.dom.Document document)
Make a new CSS style element for the given Document.- Parameters:
document
- document (factory)- Returns:
- new CSS style element.
-
svgRect
public static org.w3c.dom.Element svgRect(org.w3c.dom.Document document, double x, double y, double w, double h)
Create a SVG rectangle element.- Parameters:
document
- document to create in (factory)x
- X coordinatey
- Y coordinatew
- Widthh
- Height- Returns:
- new element
-
svgCircle
public static org.w3c.dom.Element svgCircle(org.w3c.dom.Document document, double cx, double cy, double r)
Create a SVG circle element.- Parameters:
document
- document to create in (factory)cx
- center Xcy
- center Yr
- radius- Returns:
- new element
-
svgLine
public static org.w3c.dom.Element svgLine(org.w3c.dom.Document document, double x1, double y1, double x2, double y2)
Create a SVG line element. Do not confuse this with path elements.- Parameters:
document
- document to create in (factory)x1
- first point xy1
- first point yx2
- second point xy2
- second point y- Returns:
- new element
-
svgText
public static org.w3c.dom.Element svgText(org.w3c.dom.Document document, double x, double y, java.lang.String text)
Create a SVG text element.- Parameters:
document
- document to create in (factory)x
- first point xy
- first point ytext
- Content of text element.- Returns:
- New text element.
-
svgWaitIcon
public static org.w3c.dom.Element svgWaitIcon(org.w3c.dom.Document document, double x, double y, double w, double h)
Draw a simple "please wait" icon (in-progress) as placeholder for running renderings.- Parameters:
document
- Document.x
- Lefty
- Topw
- Widthh
- Height- Returns:
- New element (currently a
SVGConstants.SVG_PATH_TAG
)
-
stringToColor
public static java.awt.Color stringToColor(java.lang.String str)
Convert a color name from SVG syntax to an AWT color object.- Parameters:
str
- Color name- Returns:
- Color value
-
colorToString
public static java.lang.String colorToString(java.awt.Color col)
Convert a color name from an AWT color object to CSS syntaxNote: currently only RGB (from ARGB order) are supported.
- Parameters:
col
- Color value- Returns:
- Color string
-
colorToString
public static java.lang.String colorToString(int col)
Convert a color name from an integer RGB color to CSS syntaxNote: currently only RGB (from ARGB order) are supported. The alpha channel will be ignored.
- Parameters:
col
- Color value- Returns:
- Color string
-
makeMarginTransform
public static java.lang.String makeMarginTransform(double owidth, double oheight, double iwidth, double iheight, double lmargin, double tmargin, double rmargin, double bmargin)
Make a transform string to add margins- Parameters:
owidth
- Width of outer (embedding) canvasoheight
- Height of outer (embedding) canvasiwidth
- Width of inner (embedded) canvasiheight
- Height of inner (embedded) canvaslmargin
- Left margin (in inner canvas' units)tmargin
- Top margin (in inner canvas' units)rmargin
- Right margin (in inner canvas' units)bmargin
- Bottom margin (in inner canvas' units)- Returns:
- Transform string
-
makeMarginTransform
public static java.lang.String makeMarginTransform(double owidth, double oheight, double iwidth, double iheight, double xmargin, double ymargin)
Make a transform string to add margins- Parameters:
owidth
- Width of outer (embedding) canvasoheight
- Height of outer (embedding) canvasiwidth
- Width of inner (embedded) canvasiheight
- Height of inner (embedded) canvasxmargin
- Left and right margin (in inner canvas' units)ymargin
- Top and bottom margin (in inner canvas' units)- Returns:
- Transform string
-
makeMarginTransform
public static java.lang.String makeMarginTransform(double owidth, double oheight, double iwidth, double iheight, double margin)
Make a transform string to add margins- Parameters:
owidth
- Width of outer (embedding) canvasoheight
- Height of outer (embedding) canvasiwidth
- Width of inner (embedded) canvasiheight
- Height of inner (embedded) canvasmargin
- Margin (in inner canvas' units)- Returns:
- Transform string
-
elementCoordinatesFromEvent
public static org.w3c.dom.svg.SVGPoint elementCoordinatesFromEvent(org.w3c.dom.Document doc, org.w3c.dom.Element tag, org.w3c.dom.events.Event evt)
Convert the coordinates of an DOM Event from screen into element coordinates.- Parameters:
doc
- Document contexttag
- Element containing the coordinate systemevt
- Event to interpret- Returns:
- coordinates
-
removeLastChild
public static void removeLastChild(org.w3c.dom.Element tag)
Remove last child of an element, when present- Parameters:
tag
- Parent
-
removeFromParent
public static void removeFromParent(org.w3c.dom.Element elem)
Remove an element from its parent, if defined.- Parameters:
elem
- Element to remove
-
svgCircleSegment
public static org.w3c.dom.Element svgCircleSegment(SVGPlot svgp, double centerx, double centery, double angleStart, double angleDelta, double innerRadius, double outerRadius)
Create a circle segment.- Parameters:
svgp
- Plot to draw tocenterx
- Center X positioncentery
- Center Y positionangleStart
- Starting angleangleDelta
- Angle deltainnerRadius
- inner radiusouterRadius
- outer radius- Returns:
- SVG element representing this circle segment
-
-