BlendMode

public final enum BlendMode
extends Enum<BlendMode>

java.lang.Object
   ↳ java.lang.Enum<android.graphics.BlendMode>
     ↳ android.graphics.BlendMode


Summary

Enum values

BlendMode  CLEAR

Destination pixels covered by the source are cleared to 0. 

BlendMode  COLOR

Replaces hue and saturation of destination with hue and saturation of source, leaving luminosity unchanged. 

BlendMode  COLOR_BURN

Makes destination darker to reflect source. 

BlendMode  COLOR_DODGE

Makes destination brighter to reflect source. 

BlendMode  DARKEN

Retains the smallest component of the source and destination pixels. 

BlendMode  DIFFERENCE

Subtracts darker from lighter with higher contrast. 

BlendMode  DST

The source pixels are discarded, leaving the destination intact. 

BlendMode  DST_ATOP

Discards the destination pixels that are not covered by source pixels. 

BlendMode  DST_IN

Keeps the destination pixels that cover source pixels, discards the remaining source and destination pixels. 

BlendMode  DST_OUT

Keeps the destination pixels that are not covered by source pixels. 

BlendMode  DST_OVER

The source pixels are drawn behind the destination pixels. 

BlendMode  EXCLUSION

Subtracts darker from lighter with lower contrast. 

BlendMode  HARD_LIGHT

Makes destination lighter or darker, depending on source. 

BlendMode  HUE

Replaces hue of destination with hue of source, leaving saturation and luminosity unchanged. 

BlendMode  LIGHTEN

Retains the largest component of the source and destination pixel. 

BlendMode  LUMINOSITY

Replaces luminosity of destination with luminosity of source, leaving hue and saturation unchanged. 

BlendMode  MODULATE

Multiplies the source and destination pixels. 

BlendMode  MULTIPLY

Multiplies the source and destination pixels. 

BlendMode  OVERLAY

Multiplies or screens the source and destination depending on the destination color. 

BlendMode  PLUS

Adds the source pixels to the destination pixels and saturates the result. 

BlendMode  SATURATION

Replaces saturation of destination saturation hue of source, leaving hue and luminosity unchanged. 

BlendMode  SCREEN

Adds the source and destination pixels, then subtracts the source pixels multiplied by the destination. 

BlendMode  SOFT_LIGHT

Makes destination lighter or darker, depending on source. 

BlendMode  SRC

The source pixels replace the destination pixels. 

BlendMode  SRC_ATOP

Discards the source pixels that do not cover destination pixels. 

BlendMode  SRC_IN

Keeps the source pixels that cover the destination pixels, discards the remaining source and destination pixels. 

BlendMode  SRC_OUT

Keeps the source pixels that do not cover destination pixels. 

BlendMode  SRC_OVER

The source pixels are drawn over the destination pixels. 

BlendMode  XOR

Discards the source and destination pixels where source pixels cover destination pixels. 

Public methods

static BlendMode valueOf(String name)
static final BlendMode[] values()

Inherited methods

Enum values

CLEAR

Added in API level 29
public static final BlendMode CLEAR

Destination pixels covered by the source are cleared to 0.

\(\alpha_{out} = 0\)

\(C_{out} = 0\)

COLOR

Added in API level 29
public static final BlendMode COLOR

Replaces hue and saturation of destination with hue and saturation of source, leaving luminosity unchanged.

COLOR_BURN

Added in API level 29
public static final BlendMode COLOR_BURN

Makes destination darker to reflect source.

\(\alpha_{out} = \alpha_{src} + \alpha_{dst} - \alpha_{src} * \alpha_{dst}\)

\begin{equation} C_{out} = \begin{cases} C_{dst} + C_{src}*(1 - \alpha_{dst}) & C_{dst} = \alpha_{dst} \\ \alpha_{dst}*(1 - \alpha_{src}) & C_{src} = 0 \\ \alpha_{src}*(\alpha_{dst} - min(\alpha_{dst}, (\alpha_{dst} - C_{dst})*\alpha_{src}/C_{src})) + C_{src} * (1 - \alpha_{dst}) + \alpha_{dst}*(1-\alpha_{src}) & otherwise \end{cases} \end{equation}

COLOR_DODGE

Added in API level 29
public static final BlendMode COLOR_DODGE

Makes destination brighter to reflect source.

\(\alpha_{out} = \alpha_{src} + \alpha_{dst} - \alpha_{src} * \alpha_{dst}\)

\begin{equation} C_{out} = \begin{cases} C_{src} * (1 - \alpha_{dst}) & C_{dst} = 0 \\ C_{src} + \alpha_{dst}*(1 - \alpha_{src}) & C_{src} = \alpha_{src} \\ \alpha_{src} * min(\alpha_{dst}, C_{dst} * \alpha_{src}/(\alpha_{src} - C_{src})) + C_{src} *(1 - \alpha_{dst} + \alpha_{dst}*(1 - \alpha_{src}) & otherwise \end{cases} \end{equation}

DARKEN

Added in API level 29
public static final BlendMode DARKEN

Retains the smallest component of the source and destination pixels.

\(\alpha_{out} = \alpha_{src} + \alpha_{dst} - \alpha_{src} * \alpha_{dst}\)

\(C_{out} = (1 - \alpha_{dst}) * C_{src} + (1 - \alpha_{src}) * C_{dst} + min(C_{src}, C_{dst})\)

DIFFERENCE

Added in API level 29
public static final BlendMode DIFFERENCE

Subtracts darker from lighter with higher contrast.

\begin{equation} \alpha_{out} = \alpha_{src} + \alpha_{dst} - \alpha_{src} * \alpha_{dst} \end{equation}

\begin{equation} C_{out} = C_{src} + C_{dst} - 2 * min(C_{src} * \alpha_{dst}, C_{dst} * \alpha_{src}) \end{equation}

DST

Added in API level 29
public static final BlendMode DST

The source pixels are discarded, leaving the destination intact.

\(\alpha_{out} = \alpha_{dst}\)

\(C_{out} = C_{dst}\)

DST_ATOP

Added in API level 29
public static final BlendMode DST_ATOP

Discards the destination pixels that are not covered by source pixels. Draws remaining destination pixels over source pixels.

\(\alpha_{out} = \alpha_{src}\)

\(C_{out} = \alpha_{src} * C_{dst} + (1 - \alpha_{dst}) * C_{src}\)

DST_IN

Added in API level 29
public static final BlendMode DST_IN

Keeps the destination pixels that cover source pixels, discards the remaining source and destination pixels.

\(\alpha_{out} = \alpha_{src} * \alpha_{dst}\)

\(C_{out} = C_{dst} * \alpha_{src}\)

DST_OUT

Added in API level 29
public static final BlendMode DST_OUT

Keeps the destination pixels that are not covered by source pixels. Discards destination pixels that are covered by source pixels. Discards all source pixels.

\(\alpha_{out} = (1 - \alpha_{src}) * \alpha_{dst}\)

\(C_{out} = (1 - \alpha_{src}) * C_{dst}\)

DST_OVER

Added in API level 29
public static final BlendMode DST_OVER

The source pixels are drawn behind the destination pixels.

\(\alpha_{out} = \alpha_{dst} + (1 - \alpha_{dst}) * \alpha_{src}\)

\(C_{out} = C_{dst} + (1 - \alpha_{dst}) * C_{src}\)

EXCLUSION

Added in API level 29
public static final BlendMode EXCLUSION

Subtracts darker from lighter with lower contrast.

\begin{equation} \alpha_{out} = \alpha_{src} + \alpha_{dst} - \alpha_{src} * \alpha_{dst} \end{equation}

\begin{equation} C_{out} = C_{src} + C_{dst} - 2 * C_{src} * C_{dst} \end{equation}

HARD_LIGHT

Added in API level 29
public static final BlendMode HARD_LIGHT

Makes destination lighter or darker, depending on source.

\(\alpha_{out} = \alpha_{src} + \alpha_{dst} - \alpha_{src} * \alpha_{dst}\)

\begin{equation} C_{out} = \begin{cases} 2*C_{src}*C_{dst} & C_{src}*(1-\alpha_{dst}) + C_{dst}*(1-\alpha_{src}) + 2*C_{src} \leq \alpha_{src} \\ \alpha_{src}*\alpha_{dst}- 2*(\alpha_{dst} - C_{dst})*(\alpha_{src} - C_{src}) & otherwise \end{cases} \end{equation}

HUE

Added in API level 29
public static final BlendMode HUE

Replaces hue of destination with hue of source, leaving saturation and luminosity unchanged.

LIGHTEN

Added in API level 29
public static final BlendMode LIGHTEN

Retains the largest component of the source and destination pixel.

\(\alpha_{out} = \alpha_{src} + \alpha_{dst} - \alpha_{src} * \alpha_{dst}\)

\(C_{out} = (1 - \alpha_{dst}) * C_{src} + (1 - \alpha_{src}) * C_{dst} + max(C_{src}, C_{dst})\)

LUMINOSITY

Added in API level 29
public static final BlendMode LUMINOSITY

Replaces luminosity of destination with luminosity of source, leaving hue and saturation unchanged.

MODULATE

Added in API level 29
public static final BlendMode MODULATE

Multiplies the source and destination pixels.

\(\alpha_{out} = \alpha_{src} * \alpha_{dst}\)

\(C_{out} = C_{src} * C_{dst}\)

MULTIPLY

Added in API level 29
public static final BlendMode MULTIPLY

Multiplies the source and destination pixels.

\(\alpha_{out} = \alpha_{src} + \alpha_{dst} - \alpha_{src} * \alpha_{dst}\)

\(C_{out} = C_{src} * (1 - \alpha_{dst}) + C_{dst} * (1 - \alpha_{src}) + (C_{src} * C_{dst})\)

OVERLAY

Added in API level 29
public static final BlendMode OVERLAY

Multiplies or screens the source and destination depending on the destination color.

\(\alpha_{out} = \alpha_{src} + \alpha_{dst} - \alpha_{src} * \alpha_{dst}\)

\(\begin{equation} C_{out} = \begin{cases} 2 * C_{src} * C_{dst} & 2 * C_{dst} \lt \alpha_{dst} \\ \alpha_{src} * \alpha_{dst} - 2 (\alpha_{dst} - C_{src}) (\alpha_{src} - C_{dst}) & otherwise \end{cases} \end{equation}\)

PLUS

Added in API level 29
public static final BlendMode PLUS

Adds the source pixels to the destination pixels and saturates the result.

\(\alpha_{out} = max(0, min(\alpha_{src} + \alpha_{dst}, 1))\)

\(C_{out} = max(0, min(C_{src} + C_{dst}, 1))\)

SATURATION

Added in API level 29
public static final BlendMode SATURATION

Replaces saturation of destination saturation hue of source, leaving hue and luminosity unchanged.

SCREEN

Added in API level 29
public static final BlendMode SCREEN

Adds the source and destination pixels, then subtracts the source pixels multiplied by the destination.

\(\alpha_{out} = \alpha_{src} + \alpha_{dst} - \alpha_{src} * \alpha_{dst}\)

\(C_{out} = C_{src} + C_{dst} - C_{src} * C_{dst}\)

SOFT_LIGHT

Added in API level 29
public static final BlendMode SOFT_LIGHT

Makes destination lighter or darker, depending on source.

Where \begin{equation} m = \begin{cases} C_{dst} / \alpha_{dst} & \alpha_{dst} \gt 0 \\ 0 & otherwise \end{cases} \end{equation}

\begin{equation} g = \begin{cases} (16 * m * m + 4 * m) * (m - 1) + 7 * m & 4 * C_{dst} \leq \alpha_{dst} \\ \sqrt m - m & otherwise \end{cases} \end{equation}

\begin{equation} f = \begin{cases} C_{dst} * (\alpha_{src} + (2 * C_{src} - \alpha_{src}) * (1 - m)) & 2 * C_{src} \leq \alpha_{src} \\ C_{dst} * \alpha_{src} + \alpha_{dst} * (2 * C_{src} - \alpha_{src}) * g & otherwise \end{cases} \end{equation}

\begin{equation} \alpha_{out} = \alpha_{src} + \alpha_{dst} - \alpha_{src} * \alpha_{dst} \end{equation} \begin{equation} C_{out} = C_{src} / \alpha_{dst} + C_{dst} / \alpha_{src} + f \end{equation}

SRC

Added in API level 29
public static final BlendMode SRC

The source pixels replace the destination pixels.

\(\alpha_{out} = \alpha_{src}\)

\(C_{out} = C_{src}\)

SRC_ATOP

Added in API level 29
public static final BlendMode SRC_ATOP

Discards the source pixels that do not cover destination pixels. Draws remaining source pixels over destination pixels.

\(\alpha_{out} = \alpha_{dst}\)

\(C_{out} = \alpha_{dst} * C_{src} + (1 - \alpha_{src}) * C_{dst}\)

SRC_IN

Added in API level 29
public static final BlendMode SRC_IN

Keeps the source pixels that cover the destination pixels, discards the remaining source and destination pixels.

\(\alpha_{out} = \alpha_{src} * \alpha_{dst}\)

\(C_{out} = C_{src} * \alpha_{dst}\)

SRC_OUT

Added in API level 29
public static final BlendMode SRC_OUT

Keeps the source pixels that do not cover destination pixels. Discards source pixels that cover destination pixels. Discards all destination pixels.

\(\alpha_{out} = (1 - \alpha_{dst}) * \alpha_{src}\)

\(C_{out} = (1 - \alpha_{dst}) * C_{src}\)

SRC_OVER

Added in API level 29
public static final BlendMode SRC_OVER

The source pixels are drawn over the destination pixels.

\(\alpha_{out} = \alpha_{src} + (1 - \alpha_{src}) * \alpha_{dst}\)

\(C_{out} = C_{src} + (1 - \alpha_{src}) * C_{dst}\)

XOR

Added in API level 29
public static final BlendMode XOR

Discards the source and destination pixels where source pixels cover destination pixels. Draws remaining source pixels.

\(\alpha_{out} = (1 - \alpha_{dst}) * \alpha_{src} + (1 - \alpha_{src}) * \alpha_{dst}\)

\(C_{out} = (1 - \alpha_{dst}) * C_{src} + (1 - \alpha_{src}) * C_{dst}\)

Public methods

valueOf

public static BlendMode valueOf (String name)

Parameters
name String

Returns
BlendMode

values

public static final BlendMode[] values ()

Returns
BlendMode[]