blob: 7cd457e7741e52669702e74f02e54cf0d5a5685e [file] [log] [blame]
<!DOCTYPE HTML>
<html>
<body>
<script src="../../resources/js-test.js"></script>
<script type="text/javascript" src="canvas-blending-helpers.js"></script>
<script type="text/javascript">
description("Series of tests to ensure correct results on applying different blend modes when drawing a rectangle with shadow.");
var context;
function actualColor(x, y) {
return context.getImageData(x, y, 1, 1).data;
}
function checkBlendModeResult(i, context, sigma) {
var expectedColor = blendColors([129 / 255, 1, 129 / 255, 1], [1, 129 / 255, 129 / 255, 1], i);
var ac = "actualColor(0, 0)";
shouldBeCloseTo(ac + "[0]", expectedColor[0], sigma);
shouldBeCloseTo(ac + "[1]", expectedColor[1], sigma);
shouldBeCloseTo(ac + "[2]", expectedColor[2], sigma);
shouldBeCloseTo(ac + "[3]", expectedColor[3], sigma);
var expectedShadowColor = blendColors([192 / 255, 192 / 255, 192 / 255, 1], [1, 129 / 255, 129 / 255, 1], i);
var ac = "actualColor(11, 11)";
shouldBeCloseTo(ac + "[0]", expectedShadowColor[0], sigma);
shouldBeCloseTo(ac + "[1]", expectedShadowColor[1], sigma);
shouldBeCloseTo(ac + "[2]", expectedShadowColor[2], sigma);
shouldBeCloseTo(ac + "[3]", expectedShadowColor[3], sigma);
}
function runTest() {
var canvas = document.createElement("canvas");
var sigma = 5;
canvas.width = 12;
canvas.height = 12;
context = canvas.getContext("2d");
for (var i = 0; i < blendModes.length; ++i) {
debug("Testing blend mode " + blendModes[i]);
context.clearRect(0, 0, 12, 12);
context.save();
drawBackdropColorWithShadowInContext(context);
context.globalCompositeOperation = blendModes[i];
drawSourceColorRectOverShadow(context);
checkBlendModeResult(i, context, sigma);
context.restore();
debug('');
}
}
runTest();
</script>
</body>
</html>