Class FlatSVGIcon.ColorFilter

  • Enclosing class:
    FlatSVGIcon

    public static class FlatSVGIcon.ColorFilter
    extends java.lang.Object
    A color filter that can modify colors of a painted FlatSVGIcon.

    The ColorFilter modifies color in two ways. Either using a color map, where specific colors are mapped to different ones. And/or by modifying the colors in a mapper function.

    When filtering a color, mappings are applied first, then the mapper function is applied.

    Global FlatSVGIcon ColorFilter can be retrieved using the getInstance() method.

    • Field Summary

      Fields 
      Modifier and Type Field Description
      private java.util.Map<java.awt.Color,​java.awt.Color> colorMap  
      private java.util.Map<java.awt.Color,​java.awt.Color> darkColorMap  
      private static FlatSVGIcon.ColorFilter instance  
      private java.util.function.Function<java.awt.Color,​java.awt.Color> mapper  
      private java.util.Map<java.lang.Integer,​java.lang.String> rgb2keyMap  
    • Constructor Summary

      Constructors 
      Constructor Description
      ColorFilter()
      Creates an empty color filter.
      ColorFilter​(java.util.function.Function<java.awt.Color,​java.awt.Color> mapper)
      Creates a color filter with a color modifying function that changes painted colors.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      FlatSVGIcon.ColorFilter add​(java.awt.Color from, java.awt.Color to)
      Adds a color mapping.
      FlatSVGIcon.ColorFilter add​(java.awt.Color from, java.awt.Color toLight, java.awt.Color toDark)
      Adds a color mapping, which has different colors for light and dark themes.
      FlatSVGIcon.ColorFilter addAll​(java.util.Map<java.awt.Color,​java.awt.Color> from2toMap)
      Adds color mappings.
      FlatSVGIcon.ColorFilter addAll​(java.util.Map<java.awt.Color,​java.awt.Color> from2toLightMap, java.util.Map<java.awt.Color,​java.awt.Color> from2toDarkMap)
      Adds a color mappings, which has different colors for light and dark themes.
      private java.awt.Color applyMappings​(java.awt.Color color)  
      static java.util.function.Function<java.awt.Color,​java.awt.Color> createRGBImageFilterFunction​(java.awt.image.RGBImageFilter rgbImageFilter)
      Creates a color modifying function that uses RGBImageFilter.filterRGB(int, int, int).
      private void ensureColorMap()  
      private void ensureDarkColorMap()  
      java.awt.Color filter​(java.awt.Color color)  
      java.util.Map<java.awt.Color,​java.awt.Color> getDarkColorMap()
      Returns the color mappings used for dark themes.
      static FlatSVGIcon.ColorFilter getInstance()
      Returns the global ColorFilter that is applied to all icons.
      java.util.Map<java.awt.Color,​java.awt.Color> getLightColorMap()
      Returns the color mappings used for light themes.
      java.util.function.Function<java.awt.Color,​java.awt.Color> getMapper()
      Returns a color modifying function or null
      FlatSVGIcon.ColorFilter remove​(java.awt.Color from)
      Removes a specific color mapping.
      FlatSVGIcon.ColorFilter removeAll()
      Removes all color mappings.
      void setMapper​(java.util.function.Function<java.awt.Color,​java.awt.Color> mapper)
      Sets a color modifying function that changes painted colors.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • rgb2keyMap

        private java.util.Map<java.lang.Integer,​java.lang.String> rgb2keyMap
      • colorMap

        private java.util.Map<java.awt.Color,​java.awt.Color> colorMap
      • darkColorMap

        private java.util.Map<java.awt.Color,​java.awt.Color> darkColorMap
      • mapper

        private java.util.function.Function<java.awt.Color,​java.awt.Color> mapper
    • Constructor Detail

      • ColorFilter

        public ColorFilter()
        Creates an empty color filter.
      • ColorFilter

        public ColorFilter​(java.util.function.Function<java.awt.Color,​java.awt.Color> mapper)
        Creates a color filter with a color modifying function that changes painted colors. The Function gets passed the original color and returns a modified one.

        Examples: A ColorFilter can be used to brighten colors of the icon:

        new ColorFilter( color -> color.brighter() );

        Using a ColorFilter, icons can also be turned monochrome (painted with a single color):

        new ColorFilter( color -> Color.RED );
        Parameters:
        mapper - The color mapper function
        Since:
        1.2
    • Method Detail

      • getInstance

        public static FlatSVGIcon.ColorFilter getInstance()
        Returns the global ColorFilter that is applied to all icons.
      • getMapper

        public java.util.function.Function<java.awt.Color,​java.awt.Color> getMapper()
        Returns a color modifying function or null
        Since:
        1.2
      • setMapper

        public void setMapper​(java.util.function.Function<java.awt.Color,​java.awt.Color> mapper)
        Sets a color modifying function that changes painted colors. The Function gets passed the original color and returns a modified one.

        Examples: A ColorFilter can be used to brighten colors of the icon:

        filter.setMapper( color -> color.brighter() );

        Using a ColorFilter, icons can also be turned monochrome (painted with a single color):

        filter.setMapper( color -> Color.RED );
        Parameters:
        mapper - The color mapper function
        Since:
        1.2
      • getLightColorMap

        public java.util.Map<java.awt.Color,​java.awt.Color> getLightColorMap()
        Returns the color mappings used for light themes.
        Since:
        1.2
      • getDarkColorMap

        public java.util.Map<java.awt.Color,​java.awt.Color> getDarkColorMap()
        Returns the color mappings used for dark themes.
        Since:
        1.2
      • addAll

        public FlatSVGIcon.ColorFilter addAll​(java.util.Map<java.awt.Color,​java.awt.Color> from2toMap)
        Adds color mappings. Used for light and dark themes.
      • addAll

        public FlatSVGIcon.ColorFilter addAll​(java.util.Map<java.awt.Color,​java.awt.Color> from2toLightMap,
                                              java.util.Map<java.awt.Color,​java.awt.Color> from2toDarkMap)
        Adds a color mappings, which has different colors for light and dark themes.
        Since:
        1.2
      • add

        public FlatSVGIcon.ColorFilter add​(java.awt.Color from,
                                           java.awt.Color to)
        Adds a color mapping. Used for light and dark themes.
      • add

        public FlatSVGIcon.ColorFilter add​(java.awt.Color from,
                                           java.awt.Color toLight,
                                           java.awt.Color toDark)
        Adds a color mapping, which has different colors for light and dark themes.
        Since:
        1.2
      • ensureColorMap

        private void ensureColorMap()
      • ensureDarkColorMap

        private void ensureDarkColorMap()
      • filter

        public java.awt.Color filter​(java.awt.Color color)
      • applyMappings

        private java.awt.Color applyMappings​(java.awt.Color color)
      • createRGBImageFilterFunction

        public static java.util.function.Function<java.awt.Color,​java.awt.Color> createRGBImageFilterFunction​(java.awt.image.RGBImageFilter rgbImageFilter)
        Creates a color modifying function that uses RGBImageFilter.filterRGB(int, int, int). Can be set to a FlatSVGIcon.ColorFilter using setMapper(Function).
        Since:
        1.2
        See Also:
        GrayFilter