Class ColorUtil

java.lang.Object
org.apache.fop.util.ColorUtil

public final class ColorUtil extends Object
Generic Color helper class.

This class supports parsing string values into color values and creating color values for strings. It provides a list of standard color names.

  • Field Details

    • CMYK_PSEUDO_PROFILE

      public static final String CMYK_PSEUDO_PROFILE
      The name for the uncalibrated CMYK pseudo-profile
      See Also:
    • SEPARATION_PSEUDO_PROFILE

      public static final String SEPARATION_PSEUDO_PROFILE
      The name for the Separation pseudo-profile used for spot colors
      See Also:
    • colorMap

      private static Map<String,Color> colorMap
      Keeps all the predefined and parsed colors.

      This map is used to predefine given colors, as well as speeding up parsing of already parsed colors.

      Important: The use of this color map assumes that all Color instances are immutable!

    • log

      private static final org.apache.commons.logging.Log log
      Logger instance
  • Constructor Details

    • ColorUtil

      private ColorUtil()
      Private constructor since this is an utility class.
  • Method Details

    • parseColorString

      public static Color parseColorString(FOUserAgent foUserAgent, String value) throws PropertyException
      Creates a color from a given string.

      This function supports a wide variety of inputs.

      • #RGB (hex 0..f)
      • #RGBA (hex 0..f)
      • #RRGGBB (hex 00..ff)
      • #RRGGBBAA (hex 00..ff)
      • rgb(r,g,b) (0..255 or 0%..100%)
      • java.awt.Color[r=r,g=g,b=b] (0..255)
      • system-color(colorname)
      • transparent
      • colorname
      • fop-rgb-icc(r,g,b,cs,cs-src,[num]+) (r/g/b: 0..1, num: 0..1)
      • cmyk(c,m,y,k) (0..1)
      Parameters:
      foUserAgent - FOUserAgent object
      value - the string to parse.
      Returns:
      a Color representing the string if possible
      Throws:
      PropertyException - if the string is not parsable or does not follow any of the given formats.
    • parseAsSystemColor

      private static Color parseAsSystemColor(String value) throws PropertyException
      Tries to parse a color given with the system-color() function.
      Parameters:
      value - the complete line
      Returns:
      a color if possible
      Throws:
      PropertyException - if the format is wrong.
    • parseAsJavaAWTColor

      private static Color parseAsJavaAWTColor(String value) throws PropertyException
      Tries to parse the standard java.awt.Color toString output.
      Parameters:
      value - the complete line
      Returns:
      a color if possible
      Throws:
      PropertyException - if the format is wrong.
      See Also:
    • parseAsRGB

      private static Color parseAsRGB(String value) throws PropertyException
      Parse a color given with the rgb() function.
      Parameters:
      value - the complete line
      Returns:
      a color if possible
      Throws:
      PropertyException - if the format is wrong.
    • parseComponent255

      private static float parseComponent255(String str, String function) throws PropertyException
      Throws:
      PropertyException
    • parseComponent1

      private static float parseComponent1(String argument, String function) throws PropertyException
      Throws:
      PropertyException
    • parseComponent

      private static float parseComponent(String argument, float min, float max, String function) throws PropertyException
      Throws:
      PropertyException
    • parseFallback

      private static Color parseFallback(String[] args, String value) throws PropertyException
      Throws:
      PropertyException
    • parseWithHash

      private static Color parseWithHash(String value) throws PropertyException
      Parse a color given in the #.... format.
      Parameters:
      value - the complete line
      Returns:
      a color if possible
      Throws:
      PropertyException - if the format is wrong.
    • parseAsFopRgbIcc

      private static Color parseAsFopRgbIcc(FOUserAgent foUserAgent, String value) throws PropertyException
      Parse a color specified using the fop-rgb-icc() function.
      Parameters:
      value - the function call
      Returns:
      a color if possible
      Throws:
      PropertyException - if the format is wrong.
    • parseAsFopRgbNamedColor

      private static Color parseAsFopRgbNamedColor(FOUserAgent foUserAgent, String value) throws PropertyException
      Parse a color specified using the fop-rgb-named-color() function.
      Parameters:
      value - the function call
      Returns:
      a color if possible
      Throws:
      PropertyException - if the format is wrong.
    • parseAsCIELabColor

      private static Color parseAsCIELabColor(FOUserAgent foUserAgent, String value) throws PropertyException
      Parse a color specified using the cie-lab-color() function.
      Parameters:
      value - the function call
      Returns:
      a color if possible
      Throws:
      PropertyException - if the format is wrong.
    • unescapeString

      private static String unescapeString(String iccProfileSrc)
    • parseAsCMYK

      private static Color parseAsCMYK(String value) throws PropertyException
      Parse a color given with the cmyk() function.
      Parameters:
      value - the complete line
      Returns:
      a color if possible
      Throws:
      PropertyException - if the format is wrong.
    • parseAsOCA

      private static Color parseAsOCA(String value) throws PropertyException
      Throws:
      PropertyException
    • colorToString

      public static String colorToString(Color color)
      Creates a re-parsable string representation of the given color.

      First, the color will be converted into the sRGB colorspace. It will then be printed as #rrggbb, or as #rrrggbbaa if an alpha value is present.

      Parameters:
      color - the color to represent.
      Returns:
      a re-parsable string representadion.
    • toRGBFunctionCall

      private static String toRGBFunctionCall(Color color)
    • getsRGBFallback

      private static Color getsRGBFallback(org.apache.xmlgraphics.java2d.color.ColorWithAlternatives color)
    • toSRGBColor

      private static Color toSRGBColor(Color color)
    • toFunctionCall

      private static String toFunctionCall(org.apache.xmlgraphics.java2d.color.ColorWithAlternatives color)
      Create string representation of a fop-rgb-icc (or fop-rgb-named-color) function call from the given color.
      Parameters:
      color - the color to turn into a function call
      Returns:
      the string representing the internal fop-rgb-icc() or fop-rgb-named-color() function call
    • toCIELabFunctionCall

      private static String toCIELabFunctionCall(org.apache.xmlgraphics.java2d.color.ColorWithAlternatives color)
    • createColor

      private static Color createColor(int r, int g, int b)
    • initializeColorMap

      private static void initializeColorMap()
      Initializes the colorMap with some predefined values.
    • lightenColor

      public static Color lightenColor(Color col, float factor)
      Lightens up a color for groove, ridge, inset and outset border effects.
      Parameters:
      col - the color to lighten up
      factor - factor by which to lighten up (negative values darken the color)
      Returns:
      the modified color
    • isPseudoProfile

      public static boolean isPseudoProfile(String colorProfileName)
      Indicates whether the given color profile name is one of the pseudo-profiles supported by FOP (ex. #CMYK).
      Parameters:
      colorProfileName - the color profile name to check
      Returns:
      true if the color profile name is of a built-in pseudo-profile
    • isGray

      public static boolean isGray(Color col)
      Indicates whether the color is a gray value.
      Parameters:
      col - the color
      Returns:
      true if it is a gray value
    • toCMYKGrayColor

      public static Color toCMYKGrayColor(float black)
      Creates an uncalibrated CMYK color with the given gray value.
      Parameters:
      black - the gray component (0 - 1)
      Returns:
      the CMYK color