| <!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> |