Class ColorUtil

java.lang.Object
org.eclipse.birt.report.model.api.util.ColorUtil

public class ColorUtil extends Object
Utility class to do color parsing or converting work. A color is a either a keyword or a numerical RGB specification.

Color property format preference have the following choices:

  • INT_FORMAT, display color as an integer.
  • HTML_FORMAT ( #RRGGBB )
  • JAVA_FORMAT ( 0xRRGGBB )
  • CSS_ABSOLUTE_FORMAT ( RGB(r,g,b) )
  • CSS_RELATIVE_FORMAT ( RGB(r%,g%,b%) )
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final int
    Color display preference for CSS absolute style: RGB(r,g,b).
    static final int
    Color display preference for CSS relative style: RGB(r%,g%,b%).
    static final int
    Default format for display preference: CSS_ABSOLUTE_FORMAT.
    static final int
    Color display preference for HTML style: #RRGGBB.
    static final int
    Useful constant for Color display preference, display Color as integer.
    static final int
    Color display preference for JAVA style: 0xRRGGBB.
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    static String
    format(int rgbValue, int rgbFormat)
    Formats an integer RGB value according to the format preference provided.
    static String
    format(String value, int rgbFormat)
    Formats an color value according to the format preference provided.
    static int
    formRGB(int r, int g, int b)
    Calculates the integer color value given its red, blue, green values.
    static String
    Gets a css predefined color given its rgb value.
    static int[]
    getRGBs(int rgbValue)
    Returns the Red, Blue, Green value for a integer RGB color value.
    static int[]
    getRGBs(String colorValue)
    Returns the Red, Blue, Green value for a color value.
    static boolean
    Indicates whether the color value is of valid css absolute format: "RGB(r,g,b)".
    static boolean
    Indicates whether the color value is of a valid css relative format: "RGB( r%, g%, b%)".
    static int
    Parses the string color value as a color keyword or a numerical RGB notation, return its corresponding rgb integer value.
    static int
    Gets the integer value of a predefined color.

    Methods inherited from class java.lang.Object

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

    • HTML_FORMAT

      public static final int HTML_FORMAT
      Color display preference for HTML style: #RRGGBB. #RRGGBB
      See Also:
    • INT_FORMAT

      public static final int INT_FORMAT
      Useful constant for Color display preference, display Color as integer.
      See Also:
    • JAVA_FORMAT

      public static final int JAVA_FORMAT
      Color display preference for JAVA style: 0xRRGGBB.
      See Also:
    • CSS_ABSOLUTE_FORMAT

      public static final int CSS_ABSOLUTE_FORMAT
      Color display preference for CSS absolute style: RGB(r,g,b).
      See Also:
    • CSS_RELATIVE_FORMAT

      public static final int CSS_RELATIVE_FORMAT
      Color display preference for CSS relative style: RGB(r%,g%,b%).
      See Also:
    • DEFAULT_FORMAT

      public static final int DEFAULT_FORMAT
      Default format for display preference: CSS_ABSOLUTE_FORMAT.
      See Also:
  • Constructor Details

    • ColorUtil

      public ColorUtil()
  • Method Details

    • parsePredefinedColor

      public static int parsePredefinedColor(String color)
      Gets the integer value of a predefined color. The color should be a predefined color name, otherwise -1 is returned.
      Parameters:
      color - a given color name, it is case insensitive.
      Returns:
      the integer value of a predefined color, return -1 if the name of the given color is not defined.
    • getPredefinedColor

      public static String getPredefinedColor(int rgb)
      Gets a css predefined color given its rgb value.
      Parameters:
      rgb - integer rgb value.
      Returns:
      a css predefined color if there is a predefined color matches the given rgb, return null otherwise.
    • isCssAbsolute

      public static boolean isCssAbsolute(String value)
      Indicates whether the color value is of valid css absolute format: "RGB(r,g,b)". The RGB prefix is case insensitive and r, g, b should be integer value. Whitespace characters are allowed around the numerical values. The followings are some cases of valid css absolute colors:

      • RGB(255,0,0)
      • Rgb( 255, 0, 0)
      • rgb(300,300,300)
      Parameters:
      value - a string color value
      Returns:
      true if the color value is in a valid css absolute color representation.
    • isCssRelative

      public static boolean isCssRelative(String value)
      Indicates whether the color value is of a valid css relative format: "RGB( r%, g%, b%)". The RGB prefix is case insensitive and r, g, b should be a float value. Whitespace characters are allowed around the numerical values. The followings are some cases of valid css relative colors:

      • RGB(100%,0%,0%)
      • Rgb( 100% , 0% , 0% )
      • rgb(200%,200%,200%)
      Parameters:
      value - a string color value
      Returns:
      true if the color value is in a valid css relative. color representation.
    • format

      public static String format(int rgbValue, int rgbFormat)
      Formats an integer RGB value according to the format preference provided. An integer RGB value can be formatted as follows:
      • INT_FORMAT, display color as an integer.
      • HTML_FORMAT ( #RRGGBB )
      • JAVA_FORMAT ( 0xRRGGBB )
      • CSS_ABSOLUTE_FORMAT ( RGB(r,g,b) )
      • CSS_RELATIVE_FORMAT ( RGB(r%,g%,b%) )

      The integer value will first be converted into 6-digits hex format(filling "0" from left), so only the right most 6 digits will be used.

      Parameters:
      rgbValue - integer RGB value for a color
      rgbFormat - Color display preference, one of Color display preference constants. For example, CSS_ABSOLUTE_FORMAT that will convert into style "RGB(255,0,0)". If the preference provided is not in the predefined list, then CSS_ABSOLUTE_FORMATwill be applied.
      Returns:
      a string representation of the color in the target format.
      See Also:
    • format

      public static String format(String value, int rgbFormat)
      Formats an color value according to the format preference provided. See parseColor(String)for the allowed color value representations.
      Parameters:
      value - a given string containing one of the allowed notation.
      rgbFormat - Color display preference, one of Color display preference constants. For example, CSS_ABSOLUTE_FORMAT that will convert into style "RGB(255,0,0)". If the preference provided is not in the predefined list, then CSS_ABSOLUTE_FORMATwill be applied.
      Returns:
      a string representation of the color in the target format.
      Throws:
      NumberFormatException - if the String representing a numerical value does not contain a parsable integer.
      See Also:
    • parseColor

      public static int parseColor(String value)
      Parses the string color value as a color keyword or a numerical RGB notation, return its corresponding rgb integer value. The string value can be one of the followings:
      • A decimal number: "16711680". The number will be clipped into 0~#FFFFFF
      • A hexadecimal number in HTML format. '#' immediately followed by either three or six hexadecimal characters. The three-digit RGB notation (#rgb) is converted into six-digit form (#rrggbb) by replicating digits, not by adding zeros. For example, #fb0 expands to #ffbb00. Values outside "#FFFFFF" will be clipped.
      • A hexadecimal number in Java format: "0xRRGGBB"
      • A css predefined color name: "red", "green", "yellow" etc.
      • A css absolute or relative notation: "rgb(r,g,b)" or "rgb(r%,g%,b%)". 'rgb(' followed by a comma-separated list of three numerical values (either three integer values in the range of 0-255, or three percentage values in the range of 0.0% to 100.0%) followed by '), Values outside the numerical ranges will be clipped. Whitespace characters are allowed around the numerical values.

      These examples given a allowed color value that can be parsed into an integer.

      • "16711680"
      • "#FFFF00"
      • "#FFFF00F", will be clipped into "#FFFFFF"
      • "0xFF00FF"
      • "red" or "green"
      • rgb(255,0,0)
      • rgb(100.0%,0%,0%)
      Parameters:
      value - a given string containing one of the allowed notation.
      Returns:
      the integer value of the color, return -1 if the value is not in one of the allowed format. If the value is in a valid integer format, return value will be clipped to 0 ~ 0xFFFFFF
    • getRGBs

      public static int[] getRGBs(int rgbValue)
      Returns the Red, Blue, Green value for a integer RGB color value. The given RGB value should be in the scope of (0~0xFFFFFF), otherwise return null.
      Parameters:
      rgbValue - a given integer RGB color value.
      Returns:
      an array containing Red, Blue, Green separately. Return null if the value is not in (0~0xFFFFFF).
    • getRGBs

      public static int[] getRGBs(String colorValue)
      Returns the Red, Blue, Green value for a color value. The given string containing one of the allowed notations.
      Parameters:
      colorValue - a given string color value in one of the allowed notations.
      Returns:
      an array containing Red, Blue, Green separately. Return null if the given color value is not parsable.
    • formRGB

      public static int formRGB(int r, int g, int b)
      Calculates the integer color value given its red, blue, green values. If any color factor is over 0xFF, it will be clipped to 0xFF; if any color factor is below 0, it will be increased to 0.
      Parameters:
      r - red value.
      g - green value.
      b - blue value.
      Returns:
      the integer color value of the given color factors.