http://www.pegtop.net/delphi/articles/blendmodes/

Modes of potential Interest:

Negation mode (under difference modes list)

Description:

This one is the "opposite" of difference mode. Note that it is NOT difference mode inverted, because black and white return the same result, but colors between become brighter instead of darker. This mode can be used to invert parts of the base image, but NOT to compare two images. An interesting note: Unlike XOR mode, this mode (generally) cannot be undone by applying it twice, but applying it three times, you get the same result as applying it once (and so on). Since I didn't see this "forgotten" mode somewhere else, I gave it this (not that perfect) name.

Formula:

f(a,b) = 1 - |1 - a - b|

result := 255 - abs(255-a-b);

Soft Dodge mode (under dodge modes list)

Description:

This mode is a combination of color dodge and inverse color burn mode, but a lot smoother than both of them. The base image is darkened a bit, but very bright blend colors are "dodged" in. I chose this name, because my aim was to make the color dodge mode softer.

Formula:

f(a,b) = ½a / (1 - b) (for a + b < 1)

1 - ½(1 - b) / a (else)

if a + b < 256 then begin

if b = 255 then

result := 255

else begin

c := (a SHL 7) DIV (255-b);

if c > 255 then result := 255 else result := c;

end;

end

else begin

// a cannot be zero here

c := 255 - (((255-b) SHL 7) DIV a);

if c < 0 then result := 0 else result := c;

end;

Soft Burn mode (under burn modes list)

Description:

This mode is a combination of color burn and inverse color dodge mode, but a lot smoother than both of them. The base image is lightened a bit, but very dark blend colors are "burned" in. I chose this name, because my aim was to make the color burn mode softer.

Formula:

f(a,b) = ½b / (1 - a) (for a + b < 1)

1 - ½(1 - a) / b (else)

if a+b < 256 then begin

if a = 255 then

Result := 255

else begin

c := (b SHL 7) DIV (255-a);

if c > 255 then Result := 255 else Result := c;

end;

end

else begin

// b cannot be zero here

c := 255-(((255-a) SHL 7) DIV b);

if c < 0 then Result := 0 else Result := c;

end;

Reflect mode (under quadratic modes list)

Description:

This mode is useful when adding shining objects or light zones to images. The formula is similar to color dodge, but the result is not that bright in most cases. The result looks a bit like soft light.

Formula:

f(a,b) = a^2 / (1 - b)

if b = 255 then

result := 255

else begin

c := a*a DIV (255-b);

if c > 255 then result := 255 else result := c;

end;

Freeze mode (under quadratic modes list)

Description:

Another variation of reflect mode (base and blend color inverted, the result inverted again).

Formula:

f(a,b) = 1 - (1 - a)^2 / b

if b = 0 then

result := 0

else begin

c := 255 - sqr(255-a) DIV b;

if c < 0 then result := 0 else result := c;

end;

Stamp mode (under additive modes list)

Description:

This mode somehow is similar to average mode. It is helpful when applying relief or bump textures to images

Formula:

f(a,b) = a + 2*b - 1

c := a + 2*b - 256;

if c < 0 then

result := 0

else if c > 255 then

result := 255

else

result := c;

Interpolation mode

Description:

This mode somehow combines multiply and screen mode (looks very similar for very dark or bright colors). A cosine function is used for calculation, similar to a cosine interpolation algorithm (that's why I gave it this name). This result is similar to average mode, but has a better contrast.

Formula:

f(a,b) = ½ - ¼cos(pi*a) - ¼cos(pi*b)

// for i := 0 to 255 do CosineTab

*:= Round(64-Cos(i*Pi/255)*64);*

c := CosineTab

c := CosineTab

**+ CosineTab[a];**

if c > 255 then result := 255 else result := c;

Admittedly there is more but many of them are just reversing of the image order like variants but I leave it up to developers to consider which others might be useful.if c > 255 then result := 255 else result := c;

Admittedly there is more but many of them are just reversing of the image order like variants but I leave it up to developers to consider which others might be useful.