Class SVGGraphicFactory
- Object
-
- SVGGraphicFactory
-
- All Implemented Interfaces:
ExternalGraphicFactory
,GraphicCache
,Factory
public class SVGGraphicFactory extends Object implements Factory, ExternalGraphicFactory, GraphicCache
External graphic factory accepting an Expression that can be evaluated to a URL pointing to a SVG file. Theformat
must beimage/svg+xml
, thought for backwards compatibilityimage/svg-xml
andimage/svg
are accepted as well.- Author:
- Andrea Aime - TOPP
-
-
Constructor Summary
Constructors Constructor Description SVGGraphicFactory()
SVGGraphicFactory(Map<RenderingHints.Key,Object> hints)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
clearCache()
Clear the graphic cache.Icon
getIcon(Feature feature, Expression url, String format, int size)
Turns the specified URL into an Icon, eventually using the Feature attributes to evaluate CQL expressions embedded in the url.
Thesize
parameter defines the size of the image (so that vector based symbols can be drawn at the specified size directly), or may be zero or negative if the size was not specified (in that case the "natural" size of the image will be used, which is the size in pixels for raster images, and 16 for any format that does not have a specific size, according to the SLD spec).
null
will be returned if this factory cannot handle the provided url.Map<RenderingHints.Key,?>
getImplementationHints()
Map of hints (maybe unmodifiable) used by this factory to customize its use.static void
resetCache()
Forcefully drops the SVG cacheprotected RenderableSVG
toRenderableSVG(String svgfile, URL svgUrl)
-
-
-
Constructor Detail
-
SVGGraphicFactory
public SVGGraphicFactory()
-
SVGGraphicFactory
public SVGGraphicFactory(Map<RenderingHints.Key,Object> hints)
-
-
Method Detail
-
getImplementationHints
public Map<RenderingHints.Key,?> getImplementationHints()
Description copied from interface:Factory
Map of hints (maybe unmodifiable) used by this factory to customize its use. This map is not guaranteed to contains all the hints supplied by the user; it may be only a subset. Consequently, hints provided here are usually not suitable for creating new factories, unless the implementation make some additional garantees.The primary purpose of this method is to determine if an existing factory instance can be reused for a set of user-supplied hints. This method is invoked by
FactoryRegistry
in order to compare this factory's hints against user's hints. This is dependency introspection only;FactoryRegistry
never invokes this method for creating new factories.Keys are usually static constants from the
Hints
class, while values are instances of some key-dependent class. The key set must contains at least all hints impacting functionality. While the key set may contains all hints supplied by the user, it is recommended to limit the set to only the hints used by this particular factory instance. A minimal set will helpsFactoryRegistry
to compare only hints that matter and avoid the creation of unnecessary instances of this factory.The hint values may be different than the one supplied by the user. If a user supplied a hint as a
Class
object, this method shall replace it by the actual instance used, if possible.Implementations of this method are usually quite simple. For example if a datum authority factory uses an ordinary datum factory, its method could be implemented as below (note that we should not check if the datum factory is null, since key with null value is the expected behaviour in this case). Example:
Map hints = new HashMap(); hints.put(Hints.DATUM_FACTORY, datumFactory); return hints;
- Specified by:
getImplementationHints
in interfaceFactory
- Returns:
- The map of hints, or an {@linkplain java.util.Collections.emptyMap() empty map} if none.
-
getIcon
public Icon getIcon(Feature feature, Expression url, String format, int size) throws Exception
Description copied from interface:ExternalGraphicFactory
Turns the specified URL into an Icon, eventually using the Feature attributes to evaluate CQL expressions embedded in the url.
Thesize
parameter defines the size of the image (so that vector based symbols can be drawn at the specified size directly), or may be zero or negative if the size was not specified (in that case the "natural" size of the image will be used, which is the size in pixels for raster images, and 16 for any format that does not have a specific size, according to the SLD spec).
null
will be returned if this factory cannot handle the provided url.- Specified by:
getIcon
in interfaceExternalGraphicFactory
- Throws:
Exception
-
toRenderableSVG
protected RenderableSVG toRenderableSVG(String svgfile, URL svgUrl) throws SAXException, IOException
- Throws:
SAXException
IOException
-
resetCache
public static void resetCache()
Forcefully drops the SVG cache
-
clearCache
public void clearCache()
Description copied from interface:GraphicCache
Clear the graphic cache.- Specified by:
clearCache
in interfaceGraphicCache
-
-