キャンバスで遊び中 - darker 。。。

globalCompositeOperation = 'darker' が FirefoxOpera で使えなくて、 Safari でも自分の期待する動作と違う。
例えば、色180の上に色100でdarkerで描画したとき

  • 期待する動作: 結果の色が 80 になる ( 80 = 180 - 100 )
  • Safari の動作: 結果の色が 25 になる ( 25 = 180 - (255-100) )

Safari の動作の方が重ねる色が暗ければ暗いほど結果の色も暗くなるので直感的かもしれないけれど。自分の期待する動作は単純な減算の方。 Canvas の仕様的にはどっちが正しいのだろう?後で調べるかなあ。

でも、 全体を色反転して lighter で合成、 でまた最後に全体を色反転すれば自分の期待する darker 作れるんじゃない? で色反転は xor で出来るんじゃない? と思ったけど xor は透明度の xor で RGB の xor じゃないみたい...
むう。