| <!DOCTYPE HTML> |
| <html> |
| <head> |
| <script src="../../resources/js-test-pre.js"></script> |
| </head> |
| <body> |
| <canvas></canvas> |
| <script> |
| |
| description("The test to ensure resetting scaling by height change"); |
| |
| function assertPixelApprox(ctx, x,y, r,g,b,a, tolerance) |
| { |
| var imgdata = ctx.getImageData(x, y, 1, 1); |
| var diff = Math.max(Math.abs(r-imgdata.data[0]), Math.abs(g-imgdata.data[1]), Math.abs(b-imgdata.data[2]), Math.abs(a-imgdata.data[3])); |
| shouldBeFalse((diff > tolerance).toString()); |
| } |
| |
| function quadToPath(quad) |
| { |
| ctx.beginPath(); |
| ctx.moveTo(quad[0].x, quad[0].y); |
| ctx.lineTo(quad[1].x, quad[1].y); |
| ctx.lineTo(quad[2].x, quad[2].y); |
| ctx.lineTo(quad[3].x, quad[3].y); |
| ctx.closePath(); |
| } |
| |
| window.canvas = document.querySelector("canvas"); |
| window.ctx = canvas.getContext("2d"); |
| |
| for (var i=0; i<100; i++) { |
| ctx.scale(10, 10); |
| } |
| // Setting width or height resets the transform of the canvas context |
| canvas.width = 200; |
| canvas.height = 100; |
| |
| quadToPath([{x:0,y:0},{x:0,y:100},{x:100,y:100},{x:100,y:0}]); |
| ctx.fillStyle = 'rgb(0, 255, 0)'; |
| ctx.fill(); |
| |
| assertPixelApprox(ctx, 50, 50, 0, 255, 0, 255, 0); |
| assertPixelApprox(ctx, 150, 50, 0, 0, 0, 0, 0); |
| |
| </script> |
| <script src="../../resources/js-test-post.js"></script> |
| </body> |
| </html> |
| |