Class FlatSVGIcon
- All Implemented Interfaces:
FlatLaf.DisabledIconProvider
,Serializable
,Accessible
,Icon
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic class
A color filter that can modify colors of a paintedFlatSVGIcon
.private static class
Nested classes/interfaces inherited from class javax.swing.ImageIcon
ImageIcon.AccessibleImageIcon
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final ClassLoader
private FlatSVGIcon.ColorFilter
private boolean
private static Boolean
private final boolean
private com.github.weisj.jsvg.SVGDocument
private final int
private boolean
private static boolean
private final String
private final float
private static boolean
private static final com.github.weisj.jsvg.parser.SVGLoader
private final URL
private final int
-
Constructor Summary
ConstructorsModifierConstructorDescriptionFlatSVGIcon
(FlatSVGIcon icon) Creates a copy of the given icon.FlatSVGIcon
(File file) Creates an SVG icon from the given file.Creates an SVG icon from the given input stream.FlatSVGIcon
(String name) Creates an SVG icon from the given resource name.FlatSVGIcon
(String name, float scale) Creates an SVG icon from the given resource name that is scaled by the given amount.FlatSVGIcon
(String name, float scale, ClassLoader classLoader) Creates an SVG icon from the given resource name that is scaled by the given amount.FlatSVGIcon
(String name, int width, int height) Creates an SVG icon from the given resource name with the given width and height.protected
FlatSVGIcon
(String name, int width, int height, float scale, boolean disabled, ClassLoader classLoader, URL url) FlatSVGIcon
(String name, int width, int height, ClassLoader classLoader) Creates an SVG icon from the given resource name with the given width and height.FlatSVGIcon
(String name, ClassLoader classLoader) Creates an SVG icon from the given resource name.FlatSVGIcon
(URI uri) Creates an SVG icon from the given URI.FlatSVGIcon
(URL url) Creates an SVG icon from the given URL. -
Method Summary
Modifier and TypeMethodDescriptionstatic void
derive
(float scale) Creates a new icon with given scaling, which is derived from this icon.derive
(int width, int height) Creates a new icon with given width and height, which is derived from this icon.Returns the class loader used to load the SVG resource.Returns the currently active color filter ornull
.Creates a new icon with disabled appearance, which is derived from this icon.int
Returns the custom icon height specified inFlatSVGIcon(String, int, int)
,FlatSVGIcon(String, int, int, ClassLoader)
orderive(int, int)
.int
Returns the scaled height of the icon.private URL
getIconURL
(String name, boolean dark) int
Returns the scaled width of the icon.getImage()
getName()
Returns the name of the SVG resource (a '/'-separated path).float
getScale()
Returns the amount by which the icon size is scaled.int
getWidth()
Returns the custom icon width specified inFlatSVGIcon(String, int, int)
,FlatSVGIcon(String, int, int, ClassLoader)
orderive(int, int)
.boolean
hasFound()
Returns whether the SVG file was found.static boolean
Checks whether the current look and feel is dark.boolean
Returns whether the icon is pained in "disabled" state.static boolean
static boolean
private static void
(package private) static com.github.weisj.jsvg.SVGDocument
private static com.github.weisj.jsvg.SVGDocument
loadSVGUncached
(URL url) void
private void
paintSvg
(Graphics2D g, int x, int y) private void
paintSvgError
(Graphics2D g, int x, int y) private int
scaleSize
(int size) setColorFilter
(FlatSVGIcon.ColorFilter colorFilter) Sets a color filter that can freely modify colors of this icon during painting.static void
setLoggingEnabled
(boolean loggingEnabled) (package private) static void
static void
setSVGDocumentEnabled
(boolean svgCacheEnabled) private void
update()
(package private) static URL
Methods inherited from class javax.swing.ImageIcon
getAccessibleContext, getDescription, getImageLoadStatus, getImageObserver, loadImage, setDescription, setImage, setImageObserver, toString
-
Field Details
-
loggingEnabled
private static boolean loggingEnabled -
svgCacheEnabled
private static boolean svgCacheEnabled -
svgCache
-
svgLoader
private static final com.github.weisj.jsvg.parser.SVGLoader svgLoader -
name
-
width
private final int width -
height
private final int height -
scale
private final float scale -
disabled
private final boolean disabled -
classLoader
-
url
-
colorFilter
-
document
private com.github.weisj.jsvg.SVGDocument document -
dark
private boolean dark -
loadFailed
private boolean loadFailed -
darkLaf
-
-
Constructor Details
-
FlatSVGIcon
Creates an SVG icon from the given resource name.The SVG attributes
width
andheight
(orviewBox
) in the tag<svg>
are used as icon size.If using Java modules, the package containing the icon must be opened in
module-info.java
. Otherwise, useFlatSVGIcon(URL)
.This is cheap operation because the icon is only loaded when used.
- Parameters:
name
- the name of the SVG resource (a '/'-separated path; e.g."com/myapp/myicon.svg"
)- See Also:
-
FlatSVGIcon
Creates an SVG icon from the given resource name. The SVG file is loaded from the given class loader.The SVG attributes
width
andheight
(orviewBox
) in the tag<svg>
are used as icon size.If using Java modules, the package containing the icon must be opened in
module-info.java
. Otherwise, useFlatSVGIcon(URL)
.This is cheap operation because the icon is only loaded when used.
- Parameters:
name
- the name of the SVG resource (a '/'-separated path; e.g."com/myapp/myicon.svg"
)classLoader
- the class loader used to load the SVG resource- See Also:
-
FlatSVGIcon
Creates an SVG icon from the given resource name with the given width and height.The icon is scaled if the given size is different to the size specified in the SVG file.
If using Java modules, the package containing the icon must be opened in
module-info.java
. Otherwise, useFlatSVGIcon(URL)
.This is cheap operation because the icon is only loaded when used.
- Parameters:
name
- the name of the SVG resource (a '/'-separated path; e.g."com/myapp/myicon.svg"
)width
- the width of the iconheight
- the height of the icon- See Also:
-
FlatSVGIcon
Creates an SVG icon from the given resource name with the given width and height. The SVG file is loaded from the given class loader.The icon is scaled if the given size is different to the size specified in the SVG file.
If using Java modules, the package containing the icon must be opened in
module-info.java
. Otherwise, useFlatSVGIcon(URL)
.This is cheap operation because the icon is only loaded when used.
- Parameters:
name
- the name of the SVG resource (a '/'-separated path; e.g."com/myapp/myicon.svg"
)width
- the width of the iconheight
- the height of the iconclassLoader
- the class loader used to load the SVG resource- See Also:
-
FlatSVGIcon
Creates an SVG icon from the given resource name that is scaled by the given amount.The SVG attributes
width
andheight
(orviewBox
) in the tag<svg>
are used as base icon size, which is multiplied by the given scale factor.If using Java modules, the package containing the icon must be opened in
module-info.java
. Otherwise, useFlatSVGIcon(URL)
.This is cheap operation because the icon is only loaded when used.
- Parameters:
name
- the name of the SVG resource (a '/'-separated path; e.g."com/myapp/myicon.svg"
)scale
- the amount by which the icon size is scaled- See Also:
-
FlatSVGIcon
Creates an SVG icon from the given resource name that is scaled by the given amount. The SVG file is loaded from the given class loader.The SVG attributes
width
andheight
(orviewBox
) in the tag<svg>
are used as base icon size, which is multiplied by the given scale factor.If using Java modules, the package containing the icon must be opened in
module-info.java
. Otherwise, useFlatSVGIcon(URL)
.This is cheap operation because the icon is only loaded when used.
- Parameters:
name
- the name of the SVG resource (a '/'-separated path; e.g."com/myapp/myicon.svg"
)scale
- the amount by which the icon size is scaledclassLoader
- the class loader used to load the SVG resource- See Also:
-
FlatSVGIcon
Creates an SVG icon from the given URL.The SVG attributes
width
andheight
(orviewBox
) in the tag<svg>
are used as icon size.This method is useful if using Java modules and the package containing the icon is not opened in
module-info.java
. E.g.new FlatSVGIcon( getClass().getResource( "/com/myapp/myicon.svg" ) )
.This is cheap operation because the icon is only loaded when used.
- Parameters:
url
- the URL of the SVG resource- Since:
- 2
- See Also:
-
FlatSVGIcon
Creates an SVG icon from the given URI.The SVG attributes
width
andheight
(orviewBox
) in the tag<svg>
are used as icon size.This is cheap operation because the icon is only loaded when used.
- Parameters:
uri
- the URI of the SVG resource- Since:
- 2
- See Also:
-
FlatSVGIcon
Creates an SVG icon from the given file.The SVG attributes
width
andheight
(orviewBox
) in the tag<svg>
are used as icon size.This is cheap operation because the icon is only loaded when used.
- Parameters:
file
- the SVG file- Since:
- 2
-
FlatSVGIcon
Creates an SVG icon from the given input stream.The SVG attributes
width
andheight
(orviewBox
) in the tag<svg>
are used as icon size.The input stream is loaded, parsed and closed immediately.
- Parameters:
in
- the input stream for reading an SVG resource- Throws:
IOException
- if an I/O exception occurs- Since:
- 2
-
FlatSVGIcon
Creates a copy of the given icon.If the icon has a color filter, then it is shared with the new icon.
- Since:
- 2.0.1
-
FlatSVGIcon
protected FlatSVGIcon(String name, int width, int height, float scale, boolean disabled, ClassLoader classLoader, URL url)
-
-
Method Details
-
getName
Returns the name of the SVG resource (a '/'-separated path).- Since:
- 1.2
-
getWidth
public int getWidth()Returns the custom icon width specified inFlatSVGIcon(String, int, int)
,FlatSVGIcon(String, int, int, ClassLoader)
orderive(int, int)
. Otherwise-1
is returned.To get the painted icon width, use
getIconWidth()
.- Since:
- 1.2
-
getHeight
public int getHeight()Returns the custom icon height specified inFlatSVGIcon(String, int, int)
,FlatSVGIcon(String, int, int, ClassLoader)
orderive(int, int)
. Otherwise-1
is returned.To get the painted icon height, use
getIconHeight()
.- Since:
- 1.2
-
getScale
public float getScale()Returns the amount by which the icon size is scaled. Usually1
.- Since:
- 1.2
-
isDisabled
public boolean isDisabled()Returns whether the icon is pained in "disabled" state.- Since:
- 1.2
- See Also:
-
getClassLoader
Returns the class loader used to load the SVG resource.- Since:
- 1.2
-
derive
Creates a new icon with given width and height, which is derived from this icon.If the icon has a color filter, then it is shared with the new icon.
- Parameters:
width
- the width of the new iconheight
- the height of the new icon- Returns:
- a new icon
-
derive
Creates a new icon with given scaling, which is derived from this icon.If the icon has a color filter, then it is shared with the new icon.
- Parameters:
scale
- the amount by which the icon size is scaled- Returns:
- a new icon
-
getDisabledIcon
Creates a new icon with disabled appearance, which is derived from this icon.If the icon has a color filter, then it is shared with the new icon.
- Specified by:
getDisabledIcon
in interfaceFlatLaf.DisabledIconProvider
- Returns:
- a new icon
-
getColorFilter
Returns the currently active color filter ornull
.- Since:
- 1.2
-
setColorFilter
Sets a color filter that can freely modify colors of this icon during painting.This method accepts a
FlatSVGIcon.ColorFilter
. Usually you would want to use a ColorFilter created using theColorFilter(Function)
constructor.This can be used to brighten colors of the icon:
icon.setColorFilter( new FlatSVGIcon.ColorFilter( color -> color.brighter() ) );
Using a filter, icons can also be turned monochrome (painted with a single color):
icon.setColorFilter( new FlatSVGIcon.ColorFilter( color -> Color.RED ) );
Note: If a filter is already set, it will be replaced.
- Parameters:
colorFilter
- The color filter- Since:
- 1.2
-
update
private void update() -
loadSVG
-
loadSVGUncached
-
getIconURL
-
hasFound
public boolean hasFound()Returns whether the SVG file was found.- Returns:
- whether the SVG file was found
-
getIconWidth
public int getIconWidth()Returns the scaled width of the icon.- Specified by:
getIconWidth
in interfaceIcon
- Overrides:
getIconWidth
in classImageIcon
-
getIconHeight
public int getIconHeight()Returns the scaled height of the icon.- Specified by:
getIconHeight
in interfaceIcon
- Overrides:
getIconHeight
in classImageIcon
-
scaleSize
private int scaleSize(int size) -
paintIcon
-
paintSvg
-
paintSvgError
-
getImage
-
setRenderingHints
-
uri2url
-
isDarkLaf
public static boolean isDarkLaf()Checks whether the current look and feel is dark.Uses
FlatLaf.isLafDark()
and caches the result.- Since:
- 1.2
-
lafChanged
private static void lafChanged() -
isLoggingEnabled
public static boolean isLoggingEnabled()- Since:
- 3.4.1
-
setLoggingEnabled
public static void setLoggingEnabled(boolean loggingEnabled) - Since:
- 3.4.1
-
isSVGDocumentEnabled
public static boolean isSVGDocumentEnabled()- Since:
- 3.4.1
-
setSVGDocumentEnabled
public static void setSVGDocumentEnabled(boolean svgCacheEnabled) - Since:
- 3.4.1
-
clearSVGDocumentCache
public static void clearSVGDocumentCache()- Since:
- 3.4.1
-