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..e9e23d69670f221ffcce78c5f4d34260c3f029f0 |
--- /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) |
+ return false; |
+ offset += stride * 4; |
+ length--; |
+ } |
+ return true; |
+} |
+ |
+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> |