added in version 22.1.0
belongs to Maven artifact com.android.support:support-compat:28.0.0-alpha1

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 its 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 its 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

added in version 22.1.0
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

added in version 24.1.0
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]

Value is between 0.0 and 100.0 inclusive.

a double: A component value [-128...127]

Value is between -128.0 and 127.0 inclusive.

b double: B component value [-128...127]

Value is between -128.0 and 127.0 inclusive.

Returns
int int containing the RGB representation

LABToXYZ

added in version 24.1.0
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)

Value is between 0.0 and 100.0 inclusive.

a double: A component value [-128...127)

Value is between -128.0 and 127.0 inclusive.

b double: B component value [-128...127)

Value is between -128.0 and 127.0 inclusive.

outXyz double: 3-element array which holds the resulting XYZ components

RGBToHSL

added in version 22.1.0
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]

Value is 255 or less.

g int: green component value [0..255]

Value is 255 or less.

b int: blue component value [0..255]

Value is 255 or less.

outHsl float: 3-element array which holds the resulting HSL components

RGBToLAB

added in version 24.1.0
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]

Value is 255 or less.

g int: green component value [0..255]

Value is 255 or less.

b int: blue component value [0..255]

Value is 255 or less.

outLab double: 3-element array which holds the resulting LAB components

RGBToXYZ

added in version 24.1.0
void RGBToXYZ (int r, 
                int g, 
                int b, 
                double[] outXyz)

Convert RGB components to its 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]

Value is 255 or less.

g int: green component value [0..255]

Value is 255 or less.

b int: blue component value [0..255]

Value is 255 or less.

outXyz double: 3-element array which holds the resulting XYZ components

XYZToColor

added in version 24.1.0
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)

Value is between 0.0 and 95.047 inclusive.

y double: Y component value [0...100)

Value is between 0.0 and 100.0 inclusive.

z double: Z component value [0...108.883)

Value is between 0.0 and 108.883 inclusive.

Returns
int int containing the RGB representation

XYZToLAB

added in version 24.1.0
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)

Value is between 0.0 and 95.047 inclusive.

y double: Y component value [0...100)

Value is between 0.0 and 100.0 inclusive.

z double: Z component value [0...108.883)

Value is between 0.0 and 108.883 inclusive.

outLab double: 3-element array which holds the resulting Lab components

blendARGB

added in version 24.1.0
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

Value is between 0.0 and 1.0 inclusive.

Returns
int

blendHSL

added in version 24.1.0
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

Value is between 0.0 and 1.0 inclusive.

outResult float: 3-element array which holds the resulting HSL components

blendLAB

added in version 24.1.0
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

Value is between 0.0 and 1.0 inclusive.

outResult double: 3-element array which holds the resulting LAB components

calculateContrast

added in version 22.1.0
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

added in version 22.1.0
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

Value is between 0.0 and 1.0 inclusive.

calculateMinimumAlpha

added in version 22.1.0
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

added in version 22.1.0
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

added in version 24.1.0
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

added in version 24.1.0
void colorToXYZ (int color, 
                double[] outXyz)

Convert the ARGB color to its 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

added in version 22.1.0
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

added in version 24.1.0
double distanceEuclidean (double[] labX, 
                double[] labY)

Returns the euclidean distance between two LAB colors.

Parameters
labX double

labY double

Returns
double

setAlphaComponent

added in version 22.1.0
int setAlphaComponent (int color, 
                int alpha)

Set the alpha component of color to be alpha.

Parameters
color int

alpha int

Value is 255 or less.

Returns
int