namespace Blend {
// Alphabetically ordered blend modes.
enum DLLPUBLIC Op
{
ArithmeticMean, // (A+B)/2
ColorBurn, // 1 - (1-B)/A
ColorDodge, // B/(1-A)
Difference, // abs(A-B)
Divide, // A/B
Exclusion, // A+B-2AB
Geometric, // 2AB/(A+B)
GeometricMean, // sqrt(AB)
HardLight, // if(A<0.5):2AB, else 1 - 2(1-A)(1-B)
Hypotenuse, // sqrt(A*A + B*B)
LinearBurn, // A+B-1
LinearLight, // 2A+B-1
Max, // max(A,B)
Min, // min(A,B)
Minus, // A-B
Multiply, // AB
Normal, // A
Overlay, // hard_light (B,A)
PinLight, // max(2A-1, min(B, 2A))
Screen, // A+B-A*B if A and B are in range 0-1, otherwise max(A,B)
SoftLight, // if (A<0.5): B*Screen(2A,B), else B+(2A-1)(D-B),
// where D=sqrt(B) if (B>0.25), otherwise ((16B-12)B+4)B.
VividLight // 1-(1-B)/2A if A<0.5, else B / (2(1-A))
};
}
bmFtZXNwYWNlIEJsZW5kIHsKCi8vIEFscGhhYmV0aWNhbGx5IG9yZGVyZWQgYmxlbmQgbW9kZXMuCmVudW0gRExMUFVCTElDIE9wCnsKICAgIEFyaXRobWV0aWNNZWFuLCAvLyAoQStCKS8yCiAgICBDb2xvckJ1cm4sICAgICAgLy8gMSAtICgxLUIpL0EKICAgIENvbG9yRG9kZ2UsICAgICAvLyBCLygxLUEpCiAgICBEaWZmZXJlbmNlLCAgICAgLy8gYWJzKEEtQikKICAgIERpdmlkZSwgICAgICAgICAvLyBBL0IKICAgIEV4Y2x1c2lvbiwgICAgICAvLyBBK0ItMkFCCiAgICBHZW9tZXRyaWMsICAgICAgLy8gMkFCLyhBK0IpCiAgICBHZW9tZXRyaWNNZWFuLCAgLy8gc3FydChBQikKICAgIEhhcmRMaWdodCwgICAgICAvLyBpZihBPDAuNSk6MkFCLCBlbHNlIDEgLSAyKDEtQSkoMS1CKQogICAgSHlwb3RlbnVzZSwgICAgIC8vIHNxcnQoQSpBICsgQipCKQogICAgTGluZWFyQnVybiwgICAgIC8vIEErQi0xCiAgICBMaW5lYXJMaWdodCwgICAgLy8gMkErQi0xCiAgICBNYXgsICAgICAgICAgICAgLy8gbWF4KEEsQikKICAgIE1pbiwgICAgICAgICAgICAvLyBtaW4oQSxCKQogICAgTWludXMsICAgICAgICAgIC8vIEEtQgogICAgTXVsdGlwbHksICAgICAgIC8vIEFCCiAgICBOb3JtYWwsICAgICAgICAgLy8gQQogICAgT3ZlcmxheSwgICAgICAgIC8vIGhhcmRfbGlnaHQgKEIsQSkKICAgIFBpbkxpZ2h0LCAgICAgICAvLyBtYXgoMkEtMSwgbWluKEIsIDJBKSkKICAgIFNjcmVlbiwgICAgICAgICAvLyBBK0ItQSpCIGlmIEEgYW5kIEIgYXJlIGluIHJhbmdlIDAtMSwgb3RoZXJ3aXNlIG1heChBLEIpCiAgICBTb2Z0TGlnaHQsICAgICAgLy8gaWYgKEE8MC41KTogQipTY3JlZW4oMkEsQiksIGVsc2UgQisoMkEtMSkoRC1CKSwKICAgICAgICAgICAgICAgICAgICAvLyB3aGVyZSBEPXNxcnQoQikgaWYgKEI+MC4yNSksIG90aGVyd2lzZSAoKDE2Qi0xMilCKzQpQi4KICAgIFZpdmlkTGlnaHQgICAgICAvLyAxLSgxLUIpLzJBIGlmIEE8MC41LCBlbHNlIEIgLyAoMigxLUEpKQp9OwoKfQ==