OLD | NEW |
(Empty) | |
| 1 <!DOCTYPE html> |
| 2 <title>Canvas.drawImage with narrow destination.</title> |
| 3 <script src="../resources/js-test.js"></script> |
| 4 <script> |
| 5 function verifyCovered(imgData, offset, stride, length) { |
| 6 while (length) { |
| 7 if (imgData[offset + 3] === 0) |
| 8 return false; |
| 9 offset += stride * 4; |
| 10 length--; |
| 11 } |
| 12 return true; |
| 13 } |
| 14 |
| 15 ImageData.prototype.pixelOffset = function(x, y) { |
| 16 return (x + y * this.width) * 4; |
| 17 } |
| 18 |
| 19 var sourceImage = document.createElement("canvas"); |
| 20 sourceImage.height = sourceImage.width = 1; |
| 21 sourceImage.getContext("2d").fillRect(0, 0, 1, 1); |
| 22 |
| 23 var c = document.createElement("canvas"); |
| 24 c.width = c.height = 100; |
| 25 var ctx = c.getContext("2d"); |
| 26 |
| 27 // Thin horizontal image. |
| 28 ctx.drawImage(sourceImage, 10, 5.5, 10, 0.95); |
| 29 |
| 30 // Thin vertical image. |
| 31 ctx.drawImage(sourceImage, 5.5, 5, 0.95, 10); |
| 32 |
| 33 // Rotated 90 degrees |
| 34 ctx.save(); |
| 35 ctx.translate(20, 15); |
| 36 ctx.rotate(Math.PI / 2); |
| 37 ctx.drawImage(sourceImage, 0, -.5, 10, 0.95); |
| 38 ctx.restore(); |
| 39 |
| 40 // Rotated -90 degrees |
| 41 ctx.save(); |
| 42 ctx.translate(25, 15); |
| 43 ctx.rotate(-Math.PI / 2); |
| 44 ctx.drawImage(sourceImage, -.5, 0, 0.95, 10); |
| 45 ctx.restore(); |
| 46 |
| 47 imgData = ctx.getImageData(0, 0, c.width, c.height); |
| 48 shouldBeTrue("verifyCovered(imgData.data, imgData.pixelOffset(10, 5), 1, 10)"); |
| 49 shouldBeTrue("verifyCovered(imgData.data, imgData.pixelOffset(5, 5), imgData.wid
th, 10)"); |
| 50 shouldBeTrue("verifyCovered(imgData.data, imgData.pixelOffset(25, 15), 1, 10)"); |
| 51 shouldBeTrue("verifyCovered(imgData.data, imgData.pixelOffset(20, 15), imgData.w
idth, 10)"); |
| 52 |
| 53 successfullyParsed = true; |
| 54 </script> |
OLD | NEW |