Chromium Code Reviews| Index: LayoutTests/canvas/thin-drawImages.html |
| diff --git a/LayoutTests/canvas/thin-drawImages.html b/LayoutTests/canvas/thin-drawImages.html |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..5c4480bea610e76695f9af0365c1f154bb3ce818 |
| --- /dev/null |
| +++ b/LayoutTests/canvas/thin-drawImages.html |
| @@ -0,0 +1,54 @@ |
| +<!DOCTYPE html> |
| +<title>Canvas.drawImage with narrow destination.</title> |
| +<script src="../resources/js-test.js"></script> |
| +<script> |
| +function verifyCovered(imgData, offset, stride, length) { |
| + while (length) { |
| + if (imgData[offset + 3] === 0) |
| + break; |
|
Justin Novosad
2014/03/25 14:35:07
Nit: I think it would be more readable if you just
fs
2014/03/25 17:18:51
Done.
|
| + offset += stride * 4; |
| + length--; |
| + } |
| + return length === 0; |
| +} |
| + |
| +ImageData.prototype.pixelOffset = function(x, y) { |
| + return (x + y * this.width) * 4; |
| +} |
| + |
| +var sourceImage = document.createElement("canvas"); |
| +sourceImage.height = sourceImage.width = 1; |
| +sourceImage.getContext("2d").fillRect(0, 0, 1, 1); |
| + |
| +var c = document.createElement("canvas"); |
| +c.width = c.height = 100; |
| +var ctx = c.getContext("2d"); |
| + |
| +// Thin horizontal image. |
| +ctx.drawImage(sourceImage, 10, 5.5, 10, 0.95); |
| + |
| +// Thin vertical image. |
| +ctx.drawImage(sourceImage, 5.5, 5, 0.95, 10); |
| + |
| +// Rotated 90 degrees |
| +ctx.save(); |
| +ctx.translate(20, 15); |
| +ctx.rotate(Math.PI / 2); |
| +ctx.drawImage(sourceImage, 0, -.5, 10, 0.95); |
| +ctx.restore(); |
| + |
| +// Rotated -90 degrees |
| +ctx.save(); |
| +ctx.translate(25, 15); |
| +ctx.rotate(-Math.PI / 2); |
| +ctx.drawImage(sourceImage, -.5, 0, 0.95, 10); |
| +ctx.restore(); |
| + |
| +imgData = ctx.getImageData(0, 0, c.width, c.height); |
| +shouldBeTrue("verifyCovered(imgData.data, imgData.pixelOffset(10, 5), 1, 10)"); |
| +shouldBeTrue("verifyCovered(imgData.data, imgData.pixelOffset(5, 5), imgData.width, 10)"); |
| +shouldBeTrue("verifyCovered(imgData.data, imgData.pixelOffset(25, 15), 1, 10)"); |
| +shouldBeTrue("verifyCovered(imgData.data, imgData.pixelOffset(20, 15), imgData.width, 10)"); |
| + |
| +successfullyParsed = true; |
| +</script> |