Most visited

Recently visited

ColorUtils

public final class ColorUtils
extends Object

java.lang.Object
   ↳ android.support.v4.graphics.ColorUtils


A set of color-related utility methods, building upon those available in Color.

Summary

Public methods

static int HSLToColor(float[] hsl)

Convert HSL (hue-saturation-lightness) components to a RGB color.

static int LABToColor(double l, double a, double b)

Converts a color from CIE Lab to its RGB representation.

static void LABToXYZ(double l, double a, double b, double[] outXyz)

Converts a color from CIE Lab to CIE XYZ representation.

static void RGBToHSL(int r, int g, int b, float[] outHsl)

Convert RGB components to HSL (hue-saturation-lightness).

static void RGBToLAB(int r, int g, int b, double[] outLab)

Convert RGB components to its CIE Lab representative components.

static void RGBToXYZ(int r, int g, int b, double[] outXyz)

Convert RGB components to it's CIE XYZ representative components.

static int XYZToColor(double x, double y, double z)

Converts a color from CIE XYZ to its RGB representation.

static void XYZToLAB(double x, double y, double z, double[] outLab)

Converts a color from CIE XYZ to CIE Lab representation.

static int blendARGB(int color1, int color2, float ratio)

Blend between two ARGB colors using the given ratio.

static void blendHSL(float[] hsl1, float[] hsl2, float ratio, float[] outResult)

Blend between hsl1 and hsl2 using the given ratio.

static void blendLAB(double[] lab1, double[] lab2, double ratio, double[] outResult)

Blend between two CIE-LAB colors using the given ratio.

static double calculateContrast(int foreground, int background)

Returns the contrast ratio between foreground and background.

static double calculateLuminance(int color)

Returns the luminance of a color as a float between 0.0 and 1.0.

static int calculateMinimumAlpha(int foreground, int background, float minContrastRatio)

Calculates the minimum alpha value which can be applied to foreground so that would have a contrast value of at least minContrastRatio when compared to background.

static void colorToHSL(int color, float[] outHsl)

Convert the ARGB color to its HSL (hue-saturation-lightness) components.

static void colorToLAB(int color, double[] outLab)

Convert the ARGB color to its CIE Lab representative components.

static void colorToXYZ(int color, double[] outXyz)

Convert the ARGB color to it's CIE XYZ representative components.

static int compositeColors(int foreground, int background)

Composite two potentially translucent colors over each other and returns the result.

static double distanceEuclidean(double[] labX, double[] labY)

Returns the euclidean distance between two LAB colors.

static int setAlphaComponent(int color, int alpha)

Set the alpha component of color to be alpha.

Inherited methods

From class java.lang.Object

Public methods

HSLToColor

int HSLToColor (float[] hsl)

Convert HSL (hue-saturation-lightness) components to a RGB color.

  • hsl[0] is Hue [0 .. 360)
  • hsl[1] is Saturation [0...1]
  • hsl[2] is Lightness [0...1]
If hsv values are out of range, they are pinned.

Parameters
hsl float: 3-element array which holds the input HSL components
Returns
int the resulting RGB color

LABToColor

int LABToColor (double l, 
                double a, 
                double b)

Converts a color from CIE Lab to its RGB representation.

Parameters
l double: L component value [0...100]
a double: A component value [-128...127]
b double: B component value [-128...127]
Returns
int int containing the RGB representation

LABToXYZ

void LABToXYZ (double l, 
                double a, 
                double b, 
                double[] outXyz)

Converts a color from CIE Lab to CIE XYZ representation.

The resulting XYZ representation will use the D65 illuminant and the CIE 2° Standard Observer (1931).

  • outXyz[0] is X [0 ...95.047)
  • outXyz[1] is Y [0...100)
  • outXyz[2] is Z [0...108.883)

Parameters
l double: L component value [0...100)
a double: A component value [-128...127)
b double: B component value [-128...127)
outXyz double: 3-element array which holds the resulting XYZ components

RGBToHSL

void RGBToHSL (int r, 
                int g, 
                int b, 
                float[] outHsl)

Convert RGB components to HSL (hue-saturation-lightness).

  • outHsl[0] is Hue [0 .. 360)
  • outHsl[1] is Saturation [0...1]
  • outHsl[2] is Lightness [0...1]

Parameters
r int: red component value [0..255]
g int: green component value [0..255]
b int: blue component value [0..255]
outHsl float: 3-element array which holds the resulting HSL components

RGBToLAB

void RGBToLAB (int r, 
                int g, 
                int b, 
                double[] outLab)

Convert RGB components to its CIE Lab representative components.

  • outLab[0] is L [0 ...1)
  • outLab[1] is a [-128...127)
  • outLab[2] is b [-128...127)

Parameters
r int: red component value [0..255]
g int: green component value [0..255]
b int: blue component value [0..255]
outLab double: 3-element array which holds the resulting LAB components

RGBToXYZ

void RGBToXYZ (int r, 
                int g, 
                int b, 
                double[] outXyz)

Convert RGB components to it's CIE XYZ representative components.

The resulting XYZ representation will use the D65 illuminant and the CIE 2° Standard Observer (1931).

  • outXyz[0] is X [0 ...95.047)
  • outXyz[1] is Y [0...100)
  • outXyz[2] is Z [0...108.883)

Parameters
r int: red component value [0..255]
g int: green component value [0..255]
b int: blue component value [0..255]
outXyz double: 3-element array which holds the resulting XYZ components

XYZToColor

int XYZToColor (double x, 
                double y, 
                double z)

Converts a color from CIE XYZ to its RGB representation.

This method expects the XYZ representation to use the D65 illuminant and the CIE 2° Standard Observer (1931).

Parameters
x double: X component value [0...95.047)
y double: Y component value [0...100)
z double: Z component value [0...108.883)
Returns
int int containing the RGB representation

XYZToLAB

void XYZToLAB (double x, 
                double y, 
                double z, 
                double[] outLab)

Converts a color from CIE XYZ to CIE Lab representation.

This method expects the XYZ representation to use the D65 illuminant and the CIE 2° Standard Observer (1931).

  • outLab[0] is L [0 ...1)
  • outLab[1] is a [-128...127)
  • outLab[2] is b [-128...127)

Parameters
x double: X component value [0...95.047)
y double: Y component value [0...100)
z double: Z component value [0...108.883)
outLab double: 3-element array which holds the resulting Lab components

blendARGB

int blendARGB (int color1, 
                int color2, 
                float ratio)

Blend between two ARGB colors using the given ratio.

A blend ratio of 0.0 will result in color1, 0.5 will give an even blend, 1.0 will result in color2.

Parameters
color1 int: the first ARGB color
color2 int: the second ARGB color
ratio float: the blend ratio of color1 to color2
Returns
int

blendHSL

void blendHSL (float[] hsl1, 
                float[] hsl2, 
                float ratio, 
                float[] outResult)

Blend between hsl1 and hsl2 using the given ratio. This will interpolate the hue using the shortest angle.

A blend ratio of 0.0 will result in hsl1, 0.5 will give an even blend, 1.0 will result in hsl2.

Parameters
hsl1 float: 3-element array which holds the first HSL color
hsl2 float: 3-element array which holds the second HSL color
ratio float: the blend ratio of hsl1 to hsl2
outResult float: 3-element array which holds the resulting HSL components

blendLAB

void blendLAB (double[] lab1, 
                double[] lab2, 
                double ratio, 
                double[] outResult)

Blend between two CIE-LAB colors using the given ratio.

A blend ratio of 0.0 will result in lab1, 0.5 will give an even blend, 1.0 will result in lab2.

Parameters
lab1 double: 3-element array which holds the first LAB color
lab2 double: 3-element array which holds the second LAB color
ratio double: the blend ratio of lab1 to lab2
outResult double: 3-element array which holds the resulting LAB components

calculateContrast

double calculateContrast (int foreground, 
                int background)

Returns the contrast ratio between foreground and background. background must be opaque.

Formula defined here.

Parameters
foreground int
background int
Returns
double

calculateLuminance

double calculateLuminance (int color)

Returns the luminance of a color as a float between 0.0 and 1.0.

Defined as the Y component in the XYZ representation of color.

Parameters
color int
Returns
double

calculateMinimumAlpha

int calculateMinimumAlpha (int foreground, 
                int background, 
                float minContrastRatio)

Calculates the minimum alpha value which can be applied to foreground so that would have a contrast value of at least minContrastRatio when compared to background.

Parameters
foreground int: the foreground color
background int: the opaque background color
minContrastRatio float: the minimum contrast ratio
Returns
int the alpha value in the range 0-255, or -1 if no value could be calculated

colorToHSL

void colorToHSL (int color, 
                float[] outHsl)

Convert the ARGB color to its HSL (hue-saturation-lightness) components.

  • outHsl[0] is Hue [0 .. 360)
  • outHsl[1] is Saturation [0...1]
  • outHsl[2] is Lightness [0...1]

Parameters
color int: the ARGB color to convert. The alpha component is ignored
outHsl float: 3-element array which holds the resulting HSL components

colorToLAB

void colorToLAB (int color, 
                double[] outLab)

Convert the ARGB color to its CIE Lab representative components.

Parameters
color int: the ARGB color to convert. The alpha component is ignored
outLab double: 3-element array which holds the resulting LAB components

colorToXYZ

void colorToXYZ (int color, 
                double[] outXyz)

Convert the ARGB color to it's CIE XYZ representative components.

The resulting XYZ representation will use the D65 illuminant and the CIE 2° Standard Observer (1931).

  • outXyz[0] is X [0 ...95.047)
  • outXyz[1] is Y [0...100)
  • outXyz[2] is Z [0...108.883)

Parameters
color int: the ARGB color to convert. The alpha component is ignored
outXyz double: 3-element array which holds the resulting LAB components

compositeColors

int compositeColors (int foreground, 
                int background)

Composite two potentially translucent colors over each other and returns the result.

Parameters
foreground int
background int
Returns
int

distanceEuclidean

double distanceEuclidean (double[] labX, 
                double[] labY)

Returns the euclidean distance between two LAB colors.

Parameters
labX double
labY double
Returns
double

setAlphaComponent

int setAlphaComponent (int color, 
                int alpha)

Set the alpha component of color to be alpha.

Parameters
color int
alpha int
Returns
int

Hooray!