Package org.jfree.svg

Class SVGHints


  • public final class SVGHints
    extends java.lang.Object
    Defines the rendering hints that can be used with the SVGGraphics2D class. The supported hints are:
    • KEY_IMAGE_HANDLING that controls how images are handled (embedded in the SVG, or referenced externally);
    • KEY_IMAGE_HREF that allows the caller to specify the image href attribute for the next image;
    • KEY_TEXT_RENDERING that allows configuration of the preferred value of the SVG text-rendering attribute in text elements;
    • KEY_ELEMENT_ID that allows the caller to specify the element ID for the next element;
    • KEY_BEGIN_GROUP tells the SVGGraphics2D instance to start a new group element with attributes controlled by the hint value (which may be a String for the group ID or, more generally, a Map containing arbitrary attribute values). Any other Graphics2D implementation will ignore this hint;
    • KEY_END_GROUP tells the SVGGraphics2D instance to end a group element. The hint value is ignored. The caller assumes responsibility for balancing the number of KEY_BEGIN_GROUP and KEY_END_GROUP hints. Any other Graphics2D implementation will ignore this hint.
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      static class  SVGHints.Key
      A key for hints used by the SVGGraphics2D class.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private static java.util.List<java.awt.RenderingHints.Key> beginGroupKeys
      A list of keys that are treated as synonyms for KEY_BEGIN_GROUP (the list does not include KEY_BEGIN_GROUP itself).
      private static java.util.List<java.awt.RenderingHints.Key> elementTitleKeys
      A list of keys that are treated as synonyms for KEY_ELEMENT_TITLE (the list does not include KEY_ELEMENT_TITLE itself).
      private static java.util.List<java.awt.RenderingHints.Key> endGroupKeys
      A list of keys that are treated as synonyms for KEY_END_GROUP (the list does not include KEY_END_GROUP itself).
      static SVGHints.Key KEY_BEGIN_GROUP
      Hint key that informs the SVGGraphics2D that the caller would like to begin a new group element.
      static SVGHints.Key KEY_DRAW_STRING_TYPE
      The key for the hint that controls whether strings are rendered as characters or vector graphics (implemented using TextLayout).
      static SVGHints.Key KEY_ELEMENT_ID
      Hint key to supply an element id for the next element generated.
      static SVGHints.Key KEY_ELEMENT_TITLE
      Hint key that informs the SVGGraphics2D that the caller would like to add a title element to the output (with the hint value being a string containing the title text).
      static SVGHints.Key KEY_END_GROUP
      Hint key that informs the SVGGraphics2D that the caller would like to close a previously opened group element.
      static SVGHints.Key KEY_IMAGE_HANDLING
      The key for the hint that controls whether images are embedded in the SVG or referenced externally.
      static SVGHints.Key KEY_IMAGE_HREF
      Hint key to supply string to be used as the href for an image that is referenced rather than embedded.
      static SVGHints.Key KEY_TEXT_RENDERING
      The key for a hint that permits configuration of the text-rendering attribute in SVG text elements
      static java.lang.Object VALUE_DRAW_STRING_TYPE_STANDARD
      Hint value for KEY_DRAW_STRING_TYPE to specify that strings should be written to the output using standard SVG text elements.
      static java.lang.Object VALUE_DRAW_STRING_TYPE_VECTOR
      Hint value for KEY_DRAW_STRING_TYPE to say that strings should be written to the output using vector graphics primitives.
      static java.lang.Object VALUE_IMAGE_HANDLING_EMBED
      Hint value for KEY_IMAGE_HANDLING to specify that images should be embedded in the SVG output using PNG data Base64 encoded.
      static java.lang.Object VALUE_IMAGE_HANDLING_REFERENCE
      Hint value for KEY_IMAGE_HANDLING to say that images should be referenced externally.
      static java.lang.String VALUE_TEXT_RENDERING_AUTO
      Hint value for KEY_TEXT_RENDERING to set the text-rendering attribute in SVG text elements to 'auto'.
      static java.lang.String VALUE_TEXT_RENDERING_INHERIT
      Hint value for KEY_TEXT_RENDERING to set the text-rendering attribute in SVG text elements to 'inherit'.
      static java.lang.String VALUE_TEXT_RENDERING_LEGIBILITY
      Hint value for KEY_TEXT_RENDERING to set the text-rendering attribute in SVG text elements to 'optimizeLegibility'.
      static java.lang.String VALUE_TEXT_RENDERING_PRECISION
      Hint value for KEY_TEXT_RENDERING to set the text-rendering attribute in SVG text elements to 'geometricPrecision'.
      static java.lang.String VALUE_TEXT_RENDERING_SPEED
      Hint value for KEY_TEXT_RENDERING to set the text-rendering attribute in SVG text elements to 'optimizeSpeed'.
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      private SVGHints()  
    • Field Detail

      • VALUE_IMAGE_HANDLING_EMBED

        public static final java.lang.Object VALUE_IMAGE_HANDLING_EMBED
        Hint value for KEY_IMAGE_HANDLING to specify that images should be embedded in the SVG output using PNG data Base64 encoded.
      • VALUE_IMAGE_HANDLING_REFERENCE

        public static final java.lang.Object VALUE_IMAGE_HANDLING_REFERENCE
        Hint value for KEY_IMAGE_HANDLING to say that images should be referenced externally.
      • VALUE_TEXT_RENDERING_AUTO

        public static final java.lang.String VALUE_TEXT_RENDERING_AUTO
        Hint value for KEY_TEXT_RENDERING to set the text-rendering attribute in SVG text elements to 'auto'.
        See Also:
        Constant Field Values
      • VALUE_TEXT_RENDERING_SPEED

        public static final java.lang.String VALUE_TEXT_RENDERING_SPEED
        Hint value for KEY_TEXT_RENDERING to set the text-rendering attribute in SVG text elements to 'optimizeSpeed'.
        See Also:
        Constant Field Values
      • VALUE_TEXT_RENDERING_LEGIBILITY

        public static final java.lang.String VALUE_TEXT_RENDERING_LEGIBILITY
        Hint value for KEY_TEXT_RENDERING to set the text-rendering attribute in SVG text elements to 'optimizeLegibility'.
        See Also:
        Constant Field Values
      • VALUE_TEXT_RENDERING_PRECISION

        public static final java.lang.String VALUE_TEXT_RENDERING_PRECISION
        Hint value for KEY_TEXT_RENDERING to set the text-rendering attribute in SVG text elements to 'geometricPrecision'.
        See Also:
        Constant Field Values
      • VALUE_TEXT_RENDERING_INHERIT

        public static final java.lang.String VALUE_TEXT_RENDERING_INHERIT
        Hint value for KEY_TEXT_RENDERING to set the text-rendering attribute in SVG text elements to 'inherit'.
        See Also:
        Constant Field Values
      • KEY_IMAGE_HREF

        public static final SVGHints.Key KEY_IMAGE_HREF
        Hint key to supply string to be used as the href for an image that is referenced rather than embedded. The value associated with the key should be a string and will be used for the next image element written to the SVG output (and then the hint will be cleared).
        Since:
        1.5
      • KEY_ELEMENT_ID

        public static final SVGHints.Key KEY_ELEMENT_ID
        Hint key to supply an element id for the next element generated.
        Since:
        1.5
      • KEY_BEGIN_GROUP

        public static final SVGHints.Key KEY_BEGIN_GROUP
        Hint key that informs the SVGGraphics2D that the caller would like to begin a new group element. The hint value is either:
        • a String that will be used as the value of the id attribute for the group; or
        • a Map instance containing arbitrary attribute values for the group (usually including an id).
        After opening the new group the hint is cleared and it is the caller's responsibility to close the group later using KEY_END_GROUP. Groups can be nested.
        Since:
        1.7
      • KEY_END_GROUP

        public static final SVGHints.Key KEY_END_GROUP
        Hint key that informs the SVGGraphics2D that the caller would like to close a previously opened group element. The hint value is ignored.
        Since:
        1.7
      • KEY_ELEMENT_TITLE

        public static final SVGHints.Key KEY_ELEMENT_TITLE
        Hint key that informs the SVGGraphics2D that the caller would like to add a title element to the output (with the hint value being a string containing the title text).
        Since:
        1.9
      • KEY_DRAW_STRING_TYPE

        public static final SVGHints.Key KEY_DRAW_STRING_TYPE
        The key for the hint that controls whether strings are rendered as characters or vector graphics (implemented using TextLayout). The latter will result in larger output files but avoids problems with fonts not being available for the viewer. Valid hint values are VALUE_DRAW_STRING_TYPE_STANDARD and VALUE_DRAW_STRING_TYPE_VECTOR.
        Since:
        2.0
      • VALUE_DRAW_STRING_TYPE_STANDARD

        public static final java.lang.Object VALUE_DRAW_STRING_TYPE_STANDARD
        Hint value for KEY_DRAW_STRING_TYPE to specify that strings should be written to the output using standard SVG text elements.
        Since:
        2.0
      • VALUE_DRAW_STRING_TYPE_VECTOR

        public static final java.lang.Object VALUE_DRAW_STRING_TYPE_VECTOR
        Hint value for KEY_DRAW_STRING_TYPE to say that strings should be written to the output using vector graphics primitives.
        Since:
        2.0
      • beginGroupKeys

        private static final java.util.List<java.awt.RenderingHints.Key> beginGroupKeys
        A list of keys that are treated as synonyms for KEY_BEGIN_GROUP (the list does not include KEY_BEGIN_GROUP itself).
      • endGroupKeys

        private static final java.util.List<java.awt.RenderingHints.Key> endGroupKeys
        A list of keys that are treated as synonyms for KEY_END_GROUP (the list does not include KEY_END_GROUP itself).
      • elementTitleKeys

        private static final java.util.List<java.awt.RenderingHints.Key> elementTitleKeys
        A list of keys that are treated as synonyms for KEY_ELEMENT_TITLE (the list does not include KEY_ELEMENT_TITLE itself).
    • Constructor Detail

      • SVGHints

        private SVGHints()
    • Method Detail

      • getBeginGroupKeys

        public static java.util.List<java.awt.RenderingHints.Key> getBeginGroupKeys()
        Creates and returns a list of keys that are synonymous with KEY_BEGIN_GROUP.
        Returns:
        A list (never null).
        Since:
        1.8
      • addBeginGroupKey

        public static void addBeginGroupKey​(java.awt.RenderingHints.Key key)
        Adds a key to the list of keys that are synonyms for KEY_BEGIN_GROUP.
        Parameters:
        key - the key (null not permitted).
        Since:
        1.8
      • removeBeginGroupKey

        public static void removeBeginGroupKey​(java.awt.RenderingHints.Key key)
        Removes a key from the list of keys that are synonyms for KEY_BEGIN_GROUP.
        Parameters:
        key - the key (null not permitted).
        Since:
        1.8
      • clearBeginGroupKeys

        public static void clearBeginGroupKeys()
        Clears the list of keys that are treated as synonyms for KEY_BEGIN_GROUP.
        Since:
        1.8
      • isBeginGroupKey

        public static boolean isBeginGroupKey​(java.awt.RenderingHints.Key key)
        Returns true if this key is equivalent to KEY_BEGIN_GROUP, and false otherwise. The purpose of this method is to allow certain keys from external packages (such as JFreeChart and Orson Charts) to use their own keys to drive the behaviour of SVGHints.KEY_BEGIN_GROUP. This has two benefits: (1) it avoids the necessity to make JFreeSVG a direct dependency, and (2) it makes the grouping behaviour generic from the point of view of the external package, rather than SVG-specific.
        Parameters:
        key - the key (null not permitted)
        Returns:
        A boolean.
        Since:
        1.8
      • getEndGroupKeys

        public static java.util.List<java.awt.RenderingHints.Key> getEndGroupKeys()
        Creates and returns a list of keys that are synonymous with KEY_END_GROUP.
        Returns:
        A list (never null).
        Since:
        1.8
      • addEndGroupKey

        public static void addEndGroupKey​(java.awt.RenderingHints.Key key)
        Adds a key to the list of keys that are synonyms for KEY_END_GROUP.
        Parameters:
        key - the key (null not permitted).
        Since:
        1.8
      • removeEndGroupKey

        public static void removeEndGroupKey​(java.awt.RenderingHints.Key key)
        Removes a key from the list of keys that are synonyms for KEY_END_GROUP.
        Parameters:
        key - the key (null not permitted).
        Since:
        1.8
      • clearEndGroupKeys

        public static void clearEndGroupKeys()
        Clears the list of keys that are treated as synonyms for KEY_END_GROUP.
        Since:
        1.8
      • isEndGroupKey

        public static boolean isEndGroupKey​(java.awt.RenderingHints.Key key)
        Returns true if this key is equivalent to KEY_END_GROUP, and false otherwise. The purpose of this method is to allow certain keys from external packages (such as JFreeChart and Orson Charts) to use their own keys to drive the behaviour of SVGHints.KEY_END_GROUP. This has two benefits: (1) it avoids the necessity to make JFreeSVG a direct dependency, and (2) it makes the grouping behaviour generic from the point of view of the external package, rather than SVG-specific.
        Parameters:
        key - the key (null not permitted).
        Returns:
        A boolean.
        Since:
        1.8
      • getElementTitleKeys

        public static java.util.List<java.awt.RenderingHints.Key> getElementTitleKeys()
        Creates and returns a list of keys that are synonymous with KEY_ELEMENT_TITLE.
        Returns:
        A list (never null).
        Since:
        1.9
      • addElementTitleKey

        public static void addElementTitleKey​(java.awt.RenderingHints.Key key)
        Adds a key to the list of keys that are synonyms for KEY_ELEMENT_TITLE.
        Parameters:
        key - the key (null not permitted).
        Since:
        1.9
      • removeElementTitleKey

        public static void removeElementTitleKey​(java.awt.RenderingHints.Key key)
        Removes a key from the list of keys that are synonyms for KEY_ELEMENT_TITLE.
        Parameters:
        key - the key (null not permitted).
        Since:
        1.9
      • clearElementTitleKeys

        public static void clearElementTitleKeys()
        Clears the list of keys that are treated as synonyms for KEY_ELEMENT_TITLE.
        Since:
        1.9
      • isElementTitleKey

        public static boolean isElementTitleKey​(java.awt.RenderingHints.Key key)
        Returns true if this key is equivalent to KEY_ELEMENT_TITLE, and false otherwise. The purpose of this method is to allow certain keys from external packages (such as JFreeChart and Orson Charts) to use their own keys to drive the behaviour of SVGHints.KEY_ELEMENT_TITLE. This has two benefits: (1) it avoids the necessity to make JFreeSVG a direct dependency, and (2) it makes the element title behaviour generic from the point of view of the external package, rather than SVG-specific.
        Parameters:
        key - the key (null not permitted)
        Returns:
        A boolean.
        Since:
        1.9
      • isOrsonChartsOnClasspath

        private static boolean isOrsonChartsOnClasspath()
        Returns true if Orson Charts (version 1.3 or later) is on the classpath, and false otherwise. This method is used to auto-register keys from Orson Charts that should translate to the behaviour of KEY_BEGIN_GROUP and KEY_END_GROUP.

        The Orson Charts library can be found at http://www.object-refinery.com/orsoncharts/
        Returns:
        A boolean.
        Since:
        1.8
      • isJFreeChartOnClasspath

        private static boolean isJFreeChartOnClasspath()
        Returns true if JFreeChart (1.0.18 or later) is on the classpath, and false otherwise. This method is used to auto-register keys from JFreeChart that should translate to the behaviour of KEY_BEGIN_GROUP and KEY_END_GROUP.

        The JFreeChart library can be found at http://www.jfree.org/jfreechart/.

        Returns:
        A boolean.
        Since:
        2.0
      • fetchKey

        private static java.awt.RenderingHints.Key fetchKey​(java.lang.String className,
                                                            java.lang.String fieldName)
      • getOrsonChartsBeginElementKey

        private static java.awt.RenderingHints.Key getOrsonChartsBeginElementKey()
      • getOrsonChartsEndElementKey

        private static java.awt.RenderingHints.Key getOrsonChartsEndElementKey()
      • getOrsonChartsElementTitleKey

        private static java.awt.RenderingHints.Key getOrsonChartsElementTitleKey()
      • getJFreeChartBeginElementKey

        private static java.awt.RenderingHints.Key getJFreeChartBeginElementKey()
      • getJFreeChartEndElementKey

        private static java.awt.RenderingHints.Key getJFreeChartEndElementKey()