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.LIGHTEN] = 'source-over';
array[BLEND_MODES.COLOR_DODGE] = 'source-over';
array[BLEND_MODES.COLOR_BURN] = 'source-over';
array[BLEND_MODES.HARD_LIGHT] = 'source-over';
array[BLEND_MODES.SOFT_LIGHT] = 'source-over';
array[BLEND_MODES.DIFFERENCE] = 'source-over';
array[BLEND_MODES.EXCLUSION] = 'source-over';
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;
}
array[BLEND_MODES.COLOR_DODGE] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA];
array[BLEND_MODES.COLOR_BURN] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA];
array[BLEND_MODES.HARD_LIGHT] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA];
array[BLEND_MODES.SOFT_LIGHT] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA];
array[BLEND_MODES.DIFFERENCE] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA];
array[BLEND_MODES.EXCLUSION] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA];
array[BLEND_MODES.HUE] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA];
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;
}
function mapPremultipliedBlendModes(): number[][]
{
const pm = [];
const npm = [];
for (let i = 0; i < 32; i++)
{
pm[i] = i;
npm[i] = i;
}
pm[BLEND_MODES.NORMAL_NPM] = BLEND_MODES.NORMAL;
pm[BLEND_MODES.ADD_NPM] = BLEND_MODES.ADD;
pm[BLEND_MODES.SCREEN_NPM] = BLEND_MODES.SCREEN;
npm[BLEND_MODES.NORMAL] = BLEND_MODES.NORMAL_NPM;
npm[BLEND_MODES.ADD] = BLEND_MODES.ADD_NPM;
npm[BLEND_MODES.SCREEN] = BLEND_MODES.SCREEN_NPM;
const array: number[][] = [];
array.push(npm);
array.push(pm);
return array;
}
const pm = [];
const npm = [];
for (let i = 0; i < 32; i++)
{
pm[i] = i;
npm[i] = i;
}
pm[BLEND_MODES.NORMAL_NPM] = BLEND_MODES.NORMAL;
pm[BLEND_MODES.ADD_NPM] = BLEND_MODES.ADD;
pm[BLEND_MODES.SCREEN_NPM] = BLEND_MODES.SCREEN;
npm[BLEND_MODES.NORMAL] = BLEND_MODES.NORMAL_NPM;
npm[BLEND_MODES.ADD] = BLEND_MODES.ADD_NPM;
npm[BLEND_MODES.SCREEN] = BLEND_MODES.SCREEN_NPM;
const array: number[][] = [];
array.push(npm);
array.push(pm);
return array;
}