From 5f6f2531a9401df362a44df610b11d0aab46a9a8 Mon Sep 17 00:00:00 2001 From: Hajime Hoshi Date: Thu, 14 Apr 2016 01:05:50 +0900 Subject: [PATCH] graphics: Add comments to CompositeModes --- graphics.go | 55 +++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 41 insertions(+), 14 deletions(-) diff --git a/graphics.go b/graphics.go index 0502128e7..88c255061 100644 --- a/graphics.go +++ b/graphics.go @@ -39,19 +39,46 @@ func glFilter(c *opengl.Context, filter Filter) opengl.Filter { // CompositeMode represents Porter-Duff composition mode. type CompositeMode int -// Note: This name convention follow CSS compositing: https://drafts.fxtf.org/compositing-2/ - +// This name convention follows CSS compositing: https://drafts.fxtf.org/compositing-2/. +// +// In the above comments, +// c_src, c_dst and c_out represent alpha-premultiplied RGB values of source, destination and output respectively. α_src and α_dst represent alpha values of source and destination respectively. const ( - CompositeModeSourceOver CompositeMode = CompositeMode(opengl.CompositeModeSourceOver) // regular alpha blending - CompositeModeClear = CompositeMode(opengl.CompositeModeClear) - CompositeModeCopy = CompositeMode(opengl.CompositeModeCopy) - CompositeModeDestination = CompositeMode(opengl.CompositeModeDestination) - CompositeModeSourceIn = CompositeMode(opengl.CompositeModeSourceIn) - CompositeModeDestinationIn = CompositeMode(opengl.CompositeModeDestinationIn) - CompositeModeSourceOut = CompositeMode(opengl.CompositeModeSourceOut) - CompositeModeDestinationOut = CompositeMode(opengl.CompositeModeDestinationOut) - CompositeModeSourceAtop = CompositeMode(opengl.CompositeModeSourceAtop) - CompositeModeDestinationAtop = CompositeMode(opengl.CompositeModeDestinationAtop) - CompositeModeXor = CompositeMode(opengl.CompositeModeXor) - CompositeModeLighter = CompositeMode(opengl.CompositeModeLighter) // sum of source and destination (a.k.a. 'plus' or 'additive') + // Regular alpha blending + // c_out = c_src + c_dst × (1 - α_src) + CompositeModeSourceOver CompositeMode = CompositeMode(opengl.CompositeModeSourceOver) + + // c_out = 0 + CompositeModeClear = CompositeMode(opengl.CompositeModeClear) + + // c_out = c_src + CompositeModeCopy = CompositeMode(opengl.CompositeModeCopy) + + // c_out = c_dst + CompositeModeDestination = CompositeMode(opengl.CompositeModeDestination) + + // c_out = c_src × α_dst + CompositeModeSourceIn = CompositeMode(opengl.CompositeModeSourceIn) + + // c_out = c_dst × α_src + CompositeModeDestinationIn = CompositeMode(opengl.CompositeModeDestinationIn) + + // c_out = c_src × (1 - α_dst) + CompositeModeSourceOut = CompositeMode(opengl.CompositeModeSourceOut) + + // c_out = c_dst × (1 - α_src) + CompositeModeDestinationOut = CompositeMode(opengl.CompositeModeDestinationOut) + + // c_out = c_src × α_dst + c_dst × (1 - α_src) + CompositeModeSourceAtop = CompositeMode(opengl.CompositeModeSourceAtop) + + // c_out = c_src × (1 - α_dst) + c_dst × α_src + CompositeModeDestinationAtop = CompositeMode(opengl.CompositeModeDestinationAtop) + + // c_out = c_src × (1 - α_dst) + c_dst × (1 - α_src) + CompositeModeXor = CompositeMode(opengl.CompositeModeXor) + + // Sum of source and destination (a.k.a. 'plus' or 'additive') + // c_out = c_src + c_dst + CompositeModeLighter = CompositeMode(opengl.CompositeModeLighter) )