Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
array[BLEND_MODES.SATURATION] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA];
array[BLEND_MODES.COLOR] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA];
array[BLEND_MODES.LUMINOSITY] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA];
array[BLEND_MODES.NONE] = [0, 0];
// not-premultiplied blend modes
array[BLEND_MODES.NORMAL_NPM] = [gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA];
array[BLEND_MODES.ADD_NPM] = [gl.SRC_ALPHA, gl.ONE, gl.ONE, gl.ONE];
array[BLEND_MODES.SCREEN_NPM] = [gl.SRC_ALPHA, gl.ONE_MINUS_SRC_COLOR, gl.ONE, gl.ONE_MINUS_SRC_ALPHA];
// composite operations
array[BLEND_MODES.SRC_IN] = [gl.DST_ALPHA, gl.ZERO];
array[BLEND_MODES.SRC_OUT] = [gl.ONE_MINUS_DST_ALPHA, gl.ZERO];
array[BLEND_MODES.SRC_ATOP] = [gl.DST_ALPHA, gl.ONE_MINUS_SRC_ALPHA];
array[BLEND_MODES.DST_OVER] = [gl.ONE_MINUS_DST_ALPHA, gl.ONE];
array[BLEND_MODES.DST_IN] = [gl.ZERO, gl.SRC_ALPHA];
array[BLEND_MODES.DST_OUT] = [gl.ZERO, gl.ONE_MINUS_SRC_ALPHA];
array[BLEND_MODES.DST_ATOP] = [gl.ONE_MINUS_DST_ALPHA, gl.SRC_ALPHA];
array[BLEND_MODES.XOR] = [gl.ONE_MINUS_DST_ALPHA, gl.ONE_MINUS_SRC_ALPHA];
// SUBTRACT from flash
array[BLEND_MODES.SUBTRACT] = [gl.ONE, gl.ONE, gl.ONE, gl.ONE, gl.FUNC_REVERSE_SUBTRACT, gl.FUNC_ADD];
return array;
}
array[BLEND_MODES.HUE] = 'source-over';
array[BLEND_MODES.SATURATION] = 'source-over';
array[BLEND_MODES.COLOR] = 'source-over';
array[BLEND_MODES.LUMINOSITY] = 'source-over';
}
// not-premultiplied, only for webgl
array[BLEND_MODES.NORMAL_NPM] = array[BLEND_MODES.NORMAL];
array[BLEND_MODES.ADD_NPM] = array[BLEND_MODES.ADD];
array[BLEND_MODES.SCREEN_NPM] = array[BLEND_MODES.SCREEN];
// composite operations
array[BLEND_MODES.SRC_IN] = 'source-in';
array[BLEND_MODES.SRC_OUT] = 'source-out';
array[BLEND_MODES.SRC_ATOP] = 'source-atop';
array[BLEND_MODES.DST_OVER] = 'destination-over';
array[BLEND_MODES.DST_IN] = 'destination-in';
array[BLEND_MODES.DST_OUT] = 'destination-out';
array[BLEND_MODES.DST_ATOP] = 'destination-atop';
array[BLEND_MODES.XOR] = 'xor';
// SUBTRACT from flash, does not exist in canvas
array[BLEND_MODES.SUBTRACT] = 'source-over';
return array;
}
setBlendMode(blendMode, readyForOuterBlend)
{
const outerBlend = blendMode === BLEND_MODES.SRC_IN
|| blendMode === BLEND_MODES.SRC_OUT
|| blendMode === BLEND_MODES.DST_IN
|| blendMode === BLEND_MODES.DST_ATOP;
if (!readyForOuterBlend && outerBlend)
{
blendMode = BLEND_MODES.NORMAL;
}
if (this._activeBlendMode === blendMode)
{
return;
}
this._activeBlendMode = blendMode;
this._outerBlend = outerBlend;
this.context.globalCompositeOperation = this.blendModes[blendMode];
}