コンテキストに対する多くの操作と同じように、globalCompositeOperation への間違った入力は単に無視されるため、特定のモードがサポートされているかどうかを確認するのは非常に簡単です。設定するだけで、現在のモードを読み取って、指定したモードであることを確認できます。
明確にするために、次のような関数を使用できます。
// setCompositeMode : sets the globalCompositeOperation on provided context.
// return true if mode is supported, false otherwise.
function setCompositeMode(ctx, newMode) {
ctx.globalCompositeOperation = newMode;
return ( ctx.globalCompositeOperation == newMode ) ;
}
ちょっとした例:
var cv=document.createElement('canvas');
var ctx= cv.getContext('2d');
console.log(" Current (default) composite mode : " + ctx.globalCompositeOperation ) ;
console.log("setting 'destination-in'.");
ctx.globalCompositeOperation = 'destination-in';
console.log(" composite mode : " + ctx.globalCompositeOperation ) ;
console.log("setting 'multiply'.");
ctx.globalCompositeOperation = 'multiply';
console.log(" composite mode : " + ctx.globalCompositeOperation ) ;
console.log("setting 'i-don-t-exist' .");
ctx.globalCompositeOperation = 'i-don-t-exist';
console.log(" composite mode : " + ctx.globalCompositeOperation ) ;
出力 (Chrome/Mac OS 上、乗算をサポート):
" Current (default) composite mode : source-over"
"setting 'destination-in'."
" composite mode : destination-in"
"setting 'multiply'."
" composite mode : multiply"
"setting 'i-don-t-exist' ."
" composite mode : multiply"