- java.lang.Object
-
- com.github.weisj.jsvg.nodes.filter.AbstractBlendComposite
-
- com.github.weisj.jsvg.nodes.filter.BlendModeComposite
-
- All Implemented Interfaces:
java.awt.Composite
public final class BlendModeComposite extends AbstractBlendComposite
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class com.github.weisj.jsvg.nodes.filter.AbstractBlendComposite
AbstractBlendComposite.Blender
-
-
Field Summary
Fields Modifier and Type Field Description private @NotNull AbstractBlendComposite.Blenderblender
-
Constructor Summary
Constructors Modifier Constructor Description privateBlendModeComposite(BlendMode blendMode)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private static voidblendColor(int @NotNull [] src, int @NotNull [] dst, int @NotNull [] result)private static voidblendColorBurn(int @NotNull [] src, int @NotNull [] dst, int @NotNull [] result)if(Cb == 1) B(Cb, Cs) = 1 else if(Cs == 0) B(Cb, Cs) = 0 else B(Cb, Cs) = 1 - min(1, (1 - Cb) / Cs)private static voidblendColorDodge(int @NotNull [] src, int @NotNull [] dst, int @NotNull [] result)if(Cb == 0) B(Cb, Cs) = 0 else if(Cs == 1) B(Cb, Cs) = 1 else B(Cb, Cs) = min(1, Cb / (1 - Cs))private static voidblendDarken(int @NotNull [] src, int @NotNull [] dst, int @NotNull [] result)B(Cb, Cs) = min(Cb, Cs)private static voidblendDifference(int @NotNull [] src, int @NotNull [] dst, int @NotNull [] result)B(Cb, Cs) = | Cb - Cs |protected @NotNull AbstractBlendComposite.Blenderblender()private static voidblendExclusion(int @NotNull [] src, int @NotNull [] dst, int @NotNull [] result)B(Cb, Cs) = Cb + Cs - 2 x Cb x Csprivate static voidblendHardLight(int @NotNull [] src, int @NotNull [] dst, int @NotNull [] result)if(Cs <= 0.5) B(Cb, Cs) = Multiply(Cb, 2 x Cs) else B(Cb, Cs) = Screen(Cb, 2 x Cs -1)private static voidblendHue(int @NotNull [] src, int @NotNull [] dst, int @NotNull [] result)private static voidblendLighten(int @NotNull [] src, int @NotNull [] dst, int @NotNull [] result)B(Cb, Cs) = max(Cb, Cs)private static voidblendLuminosity(int @NotNull [] src, int @NotNull [] dst, int @NotNull [] result)private static voidblendMultiply(int @NotNull [] src, int @NotNull [] dst, int @NotNull [] result)B(Cb, Cs) = Cb * Csprivate static voidblendOverlay(int @NotNull [] src, int @NotNull [] dst, int @NotNull [] result)B(Cb, Cs) = HardLight(Cs, Cb) if(Cb <= 0.5) B(Cb, Cs) = Multiply(2 x Cb, Cs) else B(Cb, Cs) = Screen(2 x Cb - 1, Cs)private static voidblendSaturation(int @NotNull [] src, int @NotNull [] dst, int @NotNull [] result)private static voidblendScreen(int @NotNull [] src, int @NotNull [] dst, int @NotNull [] result)B(Cb, Cs) = 1 - (1 - Cb) * (1 - Cs) = Cb + Cs - (Cb*Cs)private static voidblendSoftLight(int @NotNull [] src, int @NotNull [] dst, int @NotNull [] result)if(Cs <= 0.5) B(Cb, Cs) = Cb - (1 - 2 x Cs) x Cb x (1 - Cb) else B(Cb, Cs) = Cb + (2 x Cs - 1) x (D(Cb) - Cb) with if(Cb <= 0.25) D(Cb) = ((16 * Cb - 12) x Cb + 4) x Cb else D(Cb) = sqrt(Cb)private static intcolorBurn(int src, int dst, int srcM, int srcA, int dstM, int dstA)private static intcolorDodge(int src, int dst, int srcM, int srcA, int dstM, int dstA)static @NotNull java.awt.Compositecreate(BlendMode mode)private static @NotNull AbstractBlendComposite.BlendercreateBlender(BlendMode blendMode)Small letters: Premultiplied values Capital letters: Non-premultiplied values Cx = cx / Ax Alpha Compositing: Ao = As + Ab - (As * Ab) co = (1-Ab)*cs + (1-As)*cb + As*Ab*B(Cb, Cs) = (1-Ab)*cs + (1-As)*cb + As*Ab*B(cb/Ab, cs/As)private static intsoftLight(int src, int dst, int srcM, int srcA, int dstM, int dstA)-
Methods inherited from class com.github.weisj.jsvg.nodes.filter.AbstractBlendComposite
createContext, setConvertToLinearRGB
-
-
-
-
Field Detail
-
blender
@NotNull private final @NotNull AbstractBlendComposite.Blender blender
-
-
Constructor Detail
-
BlendModeComposite
private BlendModeComposite(BlendMode blendMode)
-
-
Method Detail
-
create
@NotNull public static @NotNull java.awt.Composite create(BlendMode mode)
-
blender
@NotNull protected @NotNull AbstractBlendComposite.Blender blender()
- Specified by:
blenderin classAbstractBlendComposite
-
createBlender
@NotNull private static @NotNull AbstractBlendComposite.Blender createBlender(BlendMode blendMode)
Small letters: Premultiplied values Capital letters: Non-premultiplied values Cx = cx / Ax Alpha Compositing: Ao = As + Ab - (As * Ab) co = (1-Ab)*cs + (1-As)*cb + As*Ab*B(Cb, Cs) = (1-Ab)*cs + (1-As)*cb + As*Ab*B(cb/Ab, cs/As)- Parameters:
blendMode- the blend mode
-
blendMultiply
private static void blendMultiply(int @NotNull [] src, int @NotNull [] dst, int @NotNull [] result)B(Cb, Cs) = Cb * Cs-
blendScreen
private static void blendScreen(int @NotNull [] src, int @NotNull [] dst, int @NotNull [] result)B(Cb, Cs) = 1 - (1 - Cb) * (1 - Cs) = Cb + Cs - (Cb*Cs)-
blendOverlay
private static void blendOverlay(int @NotNull [] src, int @NotNull [] dst, int @NotNull [] result)B(Cb, Cs) = HardLight(Cs, Cb) if(Cb <= 0.5) B(Cb, Cs) = Multiply(2 x Cb, Cs) else B(Cb, Cs) = Screen(2 x Cb - 1, Cs)-
blendDarken
private static void blendDarken(int @NotNull [] src, int @NotNull [] dst, int @NotNull [] result)B(Cb, Cs) = min(Cb, Cs)-
blendLighten
private static void blendLighten(int @NotNull [] src, int @NotNull [] dst, int @NotNull [] result)B(Cb, Cs) = max(Cb, Cs)-
blendColorDodge
private static void blendColorDodge(int @NotNull [] src, int @NotNull [] dst, int @NotNull [] result)if(Cb == 0) B(Cb, Cs) = 0 else if(Cs == 1) B(Cb, Cs) = 1 else B(Cb, Cs) = min(1, Cb / (1 - Cs))-
colorDodge
private static int colorDodge(int src, int dst, int srcM, int srcA, int dstM, int dstA)
-
blendColorBurn
private static void blendColorBurn(int @NotNull [] src, int @NotNull [] dst, int @NotNull [] result)if(Cb == 1) B(Cb, Cs) = 1 else if(Cs == 0) B(Cb, Cs) = 0 else B(Cb, Cs) = 1 - min(1, (1 - Cb) / Cs)-
colorBurn
private static int colorBurn(int src, int dst, int srcM, int srcA, int dstM, int dstA)
-
blendHardLight
private static void blendHardLight(int @NotNull [] src, int @NotNull [] dst, int @NotNull [] result)if(Cs <= 0.5) B(Cb, Cs) = Multiply(Cb, 2 x Cs) else B(Cb, Cs) = Screen(Cb, 2 x Cs -1)-
blendSoftLight
private static void blendSoftLight(int @NotNull [] src, int @NotNull [] dst, int @NotNull [] result)if(Cs <= 0.5) B(Cb, Cs) = Cb - (1 - 2 x Cs) x Cb x (1 - Cb) else B(Cb, Cs) = Cb + (2 x Cs - 1) x (D(Cb) - Cb) with if(Cb <= 0.25) D(Cb) = ((16 * Cb - 12) x Cb + 4) x Cb else D(Cb) = sqrt(Cb)-
softLight
private static int softLight(int src, int dst, int srcM, int srcA, int dstM, int dstA)
-
blendDifference
private static void blendDifference(int @NotNull [] src, int @NotNull [] dst, int @NotNull [] result)
-
-
-
-
-
-
-
-
-
-
-