2.2.2.7 MilCompositingMode

A MilCompositingMode enumeration specifies the blend operation to be used when composing two objects.

 typedef  enum
 {
   SourceOver = 0x00000000,
   SourceCopy = 0x00000001,
   SourceAdd = 0x00000002,
   SourceAlphaMultiply = 0x00000003,
   SourceInverseAlphaMultiply = 0x00000004,
   SourceUnder = 0x00000005,
   SourceOverNonPremultiplied = 0x00000006,
   SourceInverseAlphaOverNonPremultiplied = 0x00000007,
   DestInvert = 0x00000008
 } MilCompositingMode;

SourceOver:  Result = Source + (1 - Source.Alpha) * Target

SourceCopy:  Result = Source

SourceAdd:  Result = Source + Target

SourceAlphaMultiply:  Result = Source.Alpha * Target

SourceInverseAlphaMultiply:  Result = (1 - Source.Alpha) * Target

SourceUnder:  Result = (1 - Target.Alpha) * Source + Target

SourceOverNonPremultiplied:  Result = Source.Alpha * Source + (1 - Source.Alpha) * Target

SourceInverseAlphaOverNonPremultiplied:  Result = (1 - Source.Alpha) * Source + Source.Alpha * Target

DestInvert:  If Source.ARGB = {0,1,1,1} then Result = 1 - Target else Result = (1 - Target) * Source + Source.Alpha * Target