canvasのglobalCompositeOperationの計算式らしきもの
(5/13追記あり)
canvas(HTML5)のglobalCompositeOperationがどういう計算をしているか気になったので調べた。
以下は、webkitのソースをGoogleコードサーチで検索した結果。
globalCompositeOperationはCanvasRenderingContext2D#setGlobalCompositeOperationで実装されていると思われる。ここからGraphicsContext#setCompositeOperationが呼ばれているが、GraphicsContextは各プラットフォーム毎に実装されるものらしく#if PLATFORM(xxx)が沢山並ぶなんとも面倒そうな感じ。とりあえずAndroidで使われているskiaというライブラリを使う実装を見るとglobalCompositeOperationの値とskiaの合成モードの変換表とskiaの合成モードでの変換式をコメント中に発見。
きれいに整形したり、転載するのはめんどうなので、知りたい方は上記リンクを確認してください。