blob: 810f4f036566013634e5bbc2ed9d44895f7cb2bf [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Odd stretching of pixel-wide drawImage call</title>
<script type="text/javascript" charset="utf-8">
window.addEventListener('DOMContentLoaded', init, true);
var image, ctx;
function init () {
if (window.testRunner) {
testRunner.dumpAsText();
testRunner.waitUntilDone();
}
var canvas = document.getElementById("c");
canvas.width = 200;
canvas.height = 50;
ctx = canvas.getContext('2d');
image = new Image();
image.addEventListener('load', draw, false);
image.src = 'resources/orangePixels.gif';
};
function draw () {
var w = ctx.canvas.width;
var h = ctx.canvas.height;
// part between left corner and arrow
ctx.drawImage(image, 3, 2, 1, 1,
0, 0, w, h);
setTimeout(checkPixels, 0);
};
function checkPixels() {
var passed = areAllRowsUniform(ctx);
var result = document.getElementById('result');
if (passed)
result.innerHTML = "PASSED";
else
result.innerHTML = "FAILED";
if (window.testRunner)
testRunner.notifyDone();
}
function areAllRowsUniform(ctx) {
for (var y = 0; y < ctx.canvas.height; y++) {
if (!isRowUniform(ctx,y))
return false;
}
return true;
}
function isRowUniform(ctx, y) {
var start = getPixel(ctx, 0, y);
for (var i = 0; i < ctx.canvas.width; i++) {
if (!areEqual(start, getPixel(ctx, i, y)))
return false;
}
return true;
};
function areEqual(a, b) {
return a[0] == b[0] && a[1] == b[1] && a[2] == b[2] && a[3] == b[3];
};
function getPixel(ctx, x, y) {
var idata = ctx.getImageData(x,y,1,1);
return idata.data;
};
</script>
</head>
<body>
<p>DrawImage with a source of a single pixel should draw one uniform color throughout. Neighboring pixels in the source image shouldn't affect the destination rect's output pixels</p>
<p>(Bugzilla: https://bugs.webkit.org/show_bug.cgi?id=58267) (Radar: rdar://problem/9148473)</p>
<p> This canvas should be uniformly one color </p>
<p id="result"></p>
<canvas id="c"></canvas>
</body>
</html>