BlendModeCompat

Added in 1.2.0

public enum BlendModeCompat


Compat version of android.graphics.BlendMode, usages of BlendModeCompat will map to android.graphics.PorterDuff.Mode wherever possible

Summary

Enum Values

CLEAR

{@usesMathJax} Destination pixels covered by the source are cleared to 0.

COLOR

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

COLOR_BURN

{@usesMathJax} Makes destination darker to reflect source.

COLOR_DODGE

{@usesMathJax} Makes destination brighter to reflect source.

DARKEN

{@usesMathJax} Retains the smallest component of the source and destination pixels.

DIFFERENCE

{@usesMathJax} Subtracts darker from lighter with higher contrast.

DST

{@usesMathJax} The source pixels are discarded, leaving the destination intact.

DST_ATOP

{@usesMathJax} Discards the destination pixels that are not covered by source pixels.

DST_IN

{@usesMathJax} Keeps the destination pixels that cover source pixels, discards the remaining source and destination pixels.

DST_OUT

{@usesMathJax} Keeps the destination pixels that are not covered by source pixels.

DST_OVER

{@usesMathJax} The source pixels are drawn behind the destination pixels.

EXCLUSION

{@usesMathJax} Subtracts darker from lighter with lower contrast.

HARD_LIGHT

{@usesMathJax} Makes destination lighter or darker, depending on source.

HUE

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

LIGHTEN

{@usesMathJax} Retains the largest component of the source and destination pixel.

LUMINOSITY

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

MODULATE

{@usesMathJax} Multiplies the source and destination pixels.

MULTIPLY

{@usesMathJax} Multiplies the source and destination pixels.

OVERLAY

{@usesMathJax} Multiplies or screens the source and destination depending on the destination color.

PLUS

{@usesMathJax} Adds the source pixels to the destination pixels and saturates the result.

SATURATION

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

SCREEN

{@usesMathJax} Adds the source and destination pixels, then subtracts the source pixels multiplied by the destination.

SOFT_LIGHT

{@usesMathJax} Makes destination lighter or darker, depending on source.

SRC

{@usesMathJax} The source pixels replace the destination pixels.

SRC_ATOP

{@usesMathJax} Discards the source pixels that do not cover destination pixels.

SRC_IN

{@usesMathJax} Keeps the source pixels that cover the destination pixels, discards the remaining source and destination pixels.

SRC_OUT

{@usesMathJax} Keeps the source pixels that do not cover destination pixels.

SRC_OVER

{@usesMathJax} The source pixels are drawn over the destination pixels.

XOR

{@usesMathJax} Discards the source and destination pixels where source pixels cover destination pixels.

Public methods

static BlendModeCompat

Returns the enum constant of this type with the specified name.

static BlendModeCompat[]

Returns an array containing the constants of this enum type, in the order they're declared.

Enum Values

CLEAR

BlendModeCompat BlendModeCompat.CLEAR

{@usesMathJax} Destination pixels covered by the source are cleared to 0.

\(\alpha_{out} = 0\)

\(C_{out} = 0\)

COLOR

BlendModeCompat BlendModeCompat.COLOR

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

COLOR_BURN

BlendModeCompat BlendModeCompat.COLOR_BURN

{@usesMathJax} 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

BlendModeCompat BlendModeCompat.COLOR_DODGE

{@usesMathJax} 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

BlendModeCompat BlendModeCompat.DARKEN

{@usesMathJax} 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

BlendModeCompat BlendModeCompat.DIFFERENCE

{@usesMathJax} 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

BlendModeCompat BlendModeCompat.DST

{@usesMathJax} The source pixels are discarded, leaving the destination intact.

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

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

DST_ATOP

BlendModeCompat BlendModeCompat.DST_ATOP

{@usesMathJax} 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

BlendModeCompat BlendModeCompat.DST_IN

{@usesMathJax} 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

BlendModeCompat BlendModeCompat.DST_OUT

{@usesMathJax} 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

BlendModeCompat BlendModeCompat.DST_OVER

{@usesMathJax} 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

BlendModeCompat BlendModeCompat.EXCLUSION

{@usesMathJax} 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

BlendModeCompat BlendModeCompat.HARD_LIGHT

{@usesMathJax} 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

BlendModeCompat BlendModeCompat.HUE

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

LIGHTEN

BlendModeCompat BlendModeCompat.LIGHTEN

{@usesMathJax} 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

BlendModeCompat BlendModeCompat.LUMINOSITY

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

MODULATE

BlendModeCompat BlendModeCompat.MODULATE

{@usesMathJax} Multiplies the source and destination pixels.

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

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

MULTIPLY

BlendModeCompat BlendModeCompat.MULTIPLY

{@usesMathJax} 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

BlendModeCompat BlendModeCompat.OVERLAY

{@usesMathJax} 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

BlendModeCompat BlendModeCompat.PLUS

{@usesMathJax} 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

BlendModeCompat BlendModeCompat.SATURATION

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

SCREEN

BlendModeCompat BlendModeCompat.SCREEN

{@usesMathJax} 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

BlendModeCompat BlendModeCompat.SOFT_LIGHT

{@usesMathJax} 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

BlendModeCompat BlendModeCompat.SRC

{@usesMathJax} The source pixels replace the destination pixels.

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

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

SRC_ATOP

BlendModeCompat BlendModeCompat.SRC_ATOP

{@usesMathJax} 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

BlendModeCompat BlendModeCompat.SRC_IN

{@usesMathJax} 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

BlendModeCompat BlendModeCompat.SRC_OUT

{@usesMathJax} 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

BlendModeCompat BlendModeCompat.SRC_OVER

{@usesMathJax} 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

BlendModeCompat BlendModeCompat.XOR

{@usesMathJax} 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

Added in 1.2.0
public static BlendModeCompat valueOf(String name)

Returns the enum constant of this type with the specified name. The string must match exactly an identifier used to declare an enum constant in this type. (Extraneous whitespace characters are not permitted.)

Returns
BlendModeCompat

the enum constant with the specified name

Throws
java.lang.IllegalArgumentException

if this enum type has no constant with the specified name

values

Added in 1.2.0
public static BlendModeCompat[] values()

Returns an array containing the constants of this enum type, in the order they're declared. This method may be used to iterate over the constants.

Returns
BlendModeCompat[]

an array containing the constants of this enum type, in the order they're declared